计算元素内的复选框数量

发布于 2024-10-15 06:06:46 字数 947 浏览 1 评论 0原文

我正在尝试找到一种方法来使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

疯到世界奔溃 2024-10-22 06:06:46

由于 children() 只处理元素的直接子元素,因此您可以使用 find() 来处理与选择器匹配的所有后代:

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

Since children() only processes the direct children of your element, you can use find() instead to process all descendants matching the selector:

alert(parentnode.find('input.list:checked').length);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文