计算元素内的复选框数量
我正在尝试找到一种方法来使用 jQuery 计算父元素内的所有选中复选框。到目前为止我还没有找到一个像样的(并且快速的)解决方案。
为了说明这种情况:我有一个 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 列表,以供记录。 到目前为止,我已经得到了以下 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”元素中选中的复选框的长度。你能帮我吗?
I'm trying to find a way to count all checked checkboxes within a parent element using jQuery. Sofar I haven't found a decent (and fast) solution.
To illustrate the situation: I've got an ul-list with one 'check-all' checkbox, and one checkbox per child list-item. When there are no checked list-items, I want the check-all checkbox to be unchecked. Therefore I assume I've to count all the checked list-items each time one of them is changed.
[...]
<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>
[...]
As you can see I'm working with a nested ul-list, for the record.
Sofar I've got the following jQuery code, which serves for selecting the parent list-item, as I've only got to count the checkboxes within that 'group'.
// $(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);
I know it won't work using the children selector (that's for looping, right?), but I can't find a way to count the checked checkboxes length from the 'parentnode' element.. Can you help me out?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
由于 children() 只处理元素的直接子元素,因此您可以使用 find() 来处理与选择器匹配的所有后代:
Since children() only processes the direct children of your element, you can use find() instead to process all descendants matching the selector: