jQuery的:李标签(不包括decendent UL>李标签)

jQuery的:李标签(不包括decendent UL>李标签)

问题描述:

HTML的第一级的计数:jQuery的:李标签(不包括decendent 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.

+2

输出应该是4的问题?在我看来,它应该是5. – 2012-02-27 19:12:17

+0

哈哈!是的,你是完全正确的!我将编辑我的问题。之前:“4,不是6”|之后:“5,不是7” – MacGyver 2012-02-27 19:17:56

$("#top_nav > li").size()应该做的伎俩。

这是可行的,因为类似于foo > bar的选择器选择foo的直接与匹配条的子元素。函数size()返回所选实体的数量。

+1

啊,我忘了“>”字了。谢谢! – MacGyver 2012-02-27 19:10:19

+0

是的,没有'>','top_nav'中的所有列表项都被选中,即使不是直接的孩子。 – dangerChihuahua007 2012-02-27 19:11:36

+0

仅供参考,仅供参考:似乎.size()是一个更新的(更好的性能)函数..但.length支持旧版本的jQuery ...但它们的行为相同 – MacGyver 2012-02-27 19:40:25

大卫和贾斯珀均可以得到不错的选择,但你也必须筛选具有UL孩子拿到4作为输出李:

$("#top_nav > li").filter(function() { 
    return $(this).children('ul').length == 0; 
}).size()​ 
+0

哈哈!我会编辑我的问题..它应该是5,而不是4。好眼睛,好眼睛! – MacGyver 2012-02-27 19:17:36

使用一些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")