复选框单击创建问题?

时间:2011-05-18 09:48:50

标签: javascript jquery

<ul class="sorting" id="filter_by"> 
   <li><input checked="checked" type="checkbox" id="foobar" /><label for="chk1">foobar</label></li> 
   <li><input checked="checked" type="checkbox" id="foobaz"/><label for="chk2">baz</label></li> 
   <li><input checked="checked" type="checkbox" id="foofoo"/><label for="chk3">foo</label></li> 
</ul>

我想知道检查了多少个复选框。所以我写道:

$("#filter_by").change(function() {
    alert('hi');
    var len_checked = $("#filter_by > li > input:checked").length;
 });

但每次都要求两次。所以,警报运行两次。假设首先检查所有三个 现在我取消选中一个元素。然后警报运行两次。我能找到原因吗?

1 个答案:

答案 0 :(得分:3)

您应该将.change处理程序绑定到复选框,而不是UL:

$("#filter_by :checkbox").change(function() {
    alert('hi');
    var len_checked = $("#filter_by > li > input:checked").length;
});

You can try it here.

也就是说,我无法复制您所报告的内容,至少不会在您发布的代码中使用Chrome,因此其他内容可能导致此问题。你遗漏了相关细节吗?