jQuery:li标签的第一级计数(不包括decendent ul> li标签)

时间:2012-02-27 19:04:01

标签: 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="">xxx</a></li>
      <li><a href="">xxx</a></li>
    </ul>
  </li>
  <li><a href="">xxx</a></li>
</ul>

问题:

如何计算第一级li标签的数量?所以在这个例子中,输出将是5,而不是7。

3 个答案:

答案 0 :(得分:8)

$("#top_nav > li").size()应该可以解决问题。

这是有效的,因为类似于foo > bar的选择器会选择匹配bar的foo的直接子节点。 size()函数返回所选实体的数量。

答案 1 :(得分:2)

在查询中使用一些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")

答案 2 :(得分:1)

David和Jasper都给出了很好的选择,但你还必须过滤掉有一个ul子项的li来获得4作为输出:

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