2009-09-17 71 views
0

我有一个包含一些复选框的ASP.Net用户控件,并且我想在单击其中一个复选框时使用JQuery从用户控件中引发一个事件。这里是jQuery代码在用户控制,其中我试图引发事件:ASP.Net中的JQuery自定义事件用户控件

  $(document).ready(function() { 
      $(':checkbox').click(function(){ 
       $('#hfRemainingInstalls').trigger('CheckBoxClicked'); 
      }); 
     }); 

,这里是jQuery代码中包含ASPX页面,在这里我想订阅事件:

  $(document).ready(function() { 
       $("p").bind('CheckBoxClicked', function(e) {  
       alert("checkbox clicked");  
      }); 
      }); 

我从未看到我的警报,当我点击其中一个复选框。任何人都知道这里可能是什么问题?

+0

hfRemainingInstalls是P标签之一的标识? – 2009-09-17 20:11:56

+0

hfRemainingInstalls是用户控件上的一个asp隐藏字段。我试图在aspx页面上使用p标签,但现在已经改变了引用hfRemainingInstalls,但仍然无效。 – 2009-09-17 20:39:01

回答

0

我相信你有一个ID的问题。位于容器元素(如UserControls和MasterPages)内部的ASP.NET控件在呈现时,会在id属性前加上一些垃圾来确保唯一性。它通常是像“ctl01_01_YourID”这就是说,你可能应该使用jQuery的endsWith选择...

$('input[id$=hfRemainingInstalls]').trigger('CheckBoxClicked'); 

下面将提醒“真”如果元素被发现......

alert($('#hfRemainingInstalls').length > 0); 
0

所以是有ID标签P和标识hfRemainingInstalls

1之间的关系:解决方案

$(':checkbox').click(function(){ 
    $("p").trigger('CheckBoxClicked'); 
}); 

$(document).ready(function() { 
    $("p").bind('CheckBoxClicked', function(e) {  
    alert("checkbox clicked");  
    }); 
}); 

2:解决方案

$(':checkbox').click(function(){ 
    $("#hfRemainingInstalls").trigger('CheckBoxClicked'); 
}); 

$(document).ready(function() { 
    $("#hfRemainingInstalls").bind('CheckBoxClicked', function(e) {  
    alert("checkbox clicked");  
    }); 
}); 
+0

我早就想到了这一点,但刚才再试一次,但它没有帮助。 – 2009-09-17 20:32:20

+0

好吧,得到一些HTML来更好地了解如何帮助你? – 2009-09-18 09:29:25