我正试图找到一种方法来使用jQuery计算父元素中所有选中的复选框。 Sofar我还没有找到一个体面(快速)的解决方案。
为了说明这种情况:我有一个带有'check-all'复选框的ul-list,每个子list-item有一个复选框。如果没有选中的列表项,我希望取消选中check-all复选框。因此,我假设每次更改其中一个列表时,我都要计算所有已检查的列表项。
[...]
<li><input type="checkbox" class="checkall" />
<ul>
<li><input type="checkbox" id="ch1" class="list" /></li>
<li><input type="checkbox" id="ch2" class="list" /></li>
<li><input type="checkbox" id="ch3" class="list" /></li>
</ul>
</li>
[...]
正如您所看到的,我正在使用嵌套的ul-list进行记录。 Sofar我有以下jQuery代码,用于选择父列表项,因为我只需要计算该'组'中的复选框。
// $(this).val() is neccesary for my code to know which checkbox has been affected
var parentnode = $('input#' + $(this).val()).parent().parent().parent();
alert(parentnode.children('input.list:checked').length);
我知道使用子选择器是不行的(那是为了循环,对吧?),但我找不到从'parentnode'元素计算已检查复选框长度的方法..你能帮我解决吗? ?
答案 0 :(得分:4)
由于children()仅处理元素的直接子元素,因此您可以使用find()来处理与选择器匹配的所有后代:
alert(parentnode.find('input.list:checked').length);