我如何计算孩子的数量?


108

我有一个清单

<ul>
  <li>
  <li>
  <li>
  ...
</ul>

我需要jQuery来计数列表中的项目数。


1
忘记jquerydocument.querySelectorAll('ul li').length
caub 2015年

Answers:


188

您可以这样使用.length

var count = $("ul li").length;

.length告诉您找到的选择器有多少个匹配项,因此它计算您有多少个<li>下属<ul>元素...如果有子子级,请改用"ul > li"仅获取直接子级。如果<ul>页面中还有其他元素,只需更改选择器使其仅与他的选择器匹配,例如,如果选择器具有要使用的ID "#myListID > li"

在其他您不知道子类型的情况下,可以使用*(通配符)选择器或.children(),如下所示:

var count = $(".parentSelector > *").length;

要么:

var count = $(".parentSelector").children().length;

1
如果不知道孩子是“ li”,并且可能是什么,该怎么办?
Starx 2012年

7
@Starx:$("#parent").children().length
rekamoyka 2012年

1
@AlecAnanian,不,我知道。我的意思是我希望尼克也将其添加到他的答案中。
Starx 2012年

2
@Starx-添加以防万一,这可以帮助一些人:)
Nick Craver

如果该元素不可见怎么办?
2013年

6

您不需要jQuery。您可以使用JavaScript的.childNodes.length

如果不想包含默认的文本节点(默认情况下为空),只需确保减去1。因此,您将使用以下内容:

var count = elem.childNodes.length - 1;

1

尝试使用:

var count = $("ul > li").size();
alert(count);

0

如果您使用它来确定当前选择器以找到其子级,那么该怎么办呢:<ol>那么<li>如何编写选择器将 var count = $(this+"> li").length;无法正常工作。


如果ol有一门课,你可以写$("ol.class > li").length
Qwerty 2014年

0

您可以使用jQuery来做到这一点:

此方法获取其子级列表,然后计算该列表的长度,就这么简单。

$("ul").find("*").length;

find()方法沿着子代向下遍历DOM,一直向下到最后一个子代。

注意: children()方法在DOM树中遍历单个级别。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.