jQuery:li标记的第一级计数(不包括Decent ul>;li标记)
HTML:jQuery:li标记的第一级计数(不包括Decent ul>;li标记),jquery,html,count,html-lists,Jquery,Html,Count,Html Lists,HTML: <ul id='top_nav'> <li><a href="">xxx</a></li> <li><a href="">xxx</a></li> <li><a href="">xxx</a></li> <li> <ul> <li><a href=""&
<ul id='top_nav'>
<li><a href="">xxx</a></li>
<li><a href="">xxx</a></li>
<li><a href="">xxx</a></li>
<li>
<ul>
<li><a href="">xxx</a></li>
<li><a href="">xxx</a></li>
</ul>
</li>
<li><a href="">xxx</a></li>
</ul>
问题:
<ul id='top_nav'>
<li><a href="">xxx</a></li>
<li><a href="">xxx</a></li>
<li><a href="">xxx</a></li>
<li>
<ul>
<li><a href="">xxx</a></li>
<li><a href="">xxx</a></li>
</ul>
</li>
<li><a href="">xxx</a></li>
</ul>
如何获取第一级li标记的计数?因此,在本例中,输出将是5,而不是7。$(“#top_nav>li”)。size()
应该起作用
这是因为类似于
foo>bar
的选择器选择与bar匹配的foo的直接子对象。size()
函数返回所选实体的数量 David和Jasper都提供了很好的选项,但您还必须过滤具有ul子级的li,以获得4作为输出:
$("#top_nav > li").filter(function() {
return $(this).children('ul').length == 0;
}).size()
在你的查询中使用一些css,让它变得更简单。请记住,jQuery已经完成了所有艰苦的工作,因此您不需要太多:
$("ul li:first-child")
// the previous simply is a call to all unordered list items that re first in the list
$("ul li:first-child").length
// the previous will get you the total count of all first list items
LOL刚刚意识到我误解了这个问题,在这种情况下答案已经在那里了
$("#top_nav > li")
啊,我忘了“>”这个字了。谢谢是的,如果没有
,则会选择top\u nav
中的所有列表项,甚至不会选择直接的子项。仅供阅读以下内容的读者参考:似乎.size()是一个更新(性能更好)的函数。。但是,jQuery的旧版本支持.length。。。但它们的行为都是一样的,但应该是4?在我看来应该是5。哈哈!是的,你完全正确!我将编辑我的问题。前:“4,不是6”|后:“5,不是7”哈哈!我将编辑我的问题。。应该是5,而不是4。不过我会+1你。好眼力,好眼力!