<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;
});
但每次都要求两次。所以,警报运行两次。假设首先检查所有三个 现在我取消选中一个元素。然后警报运行两次。我能找到原因吗?
答案 0 :(得分:3)
您应该将.change
处理程序绑定到复选框,而不是UL:
$("#filter_by :checkbox").change(function() {
alert('hi');
var len_checked = $("#filter_by > li > input:checked").length;
});
也就是说,我无法复制您所报告的内容,至少不会在您发布的代码中使用Chrome,因此其他内容可能导致此问题。你遗漏了相关细节吗?