2011-01-31 65 views
2

我在试图找到一种方法来计算所有选中的复选框内使用jQuery的父元素。 Sofar我还没有找到一个体面的(和快速的)解决方案。计算元素内的复选框

为了说明这种情况:我有一个带有“全部检查”复选框的ul列表,以及每个子列表项的一个复选框。当没有检查列表项目时,我希望取消选中全部检查框。因此,我认为每次更改其中一个时,我都要计算所有已检查的列表项。

[...] 
<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列表进行记录。 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”元素算选中的复选框长度。可你帮我吗?

回答

4

由于children()只处理你的元素的直接孩子,你可以使用find(),而不是处理选择匹配所有后代:

alert(parentnode.find('input.list:checked').length); 
+0

感谢,做工精细! – carlo 2011-01-31 14:34:36