jQuery:li标记的第一级计数(不包括Decent ul>;li标记)

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=""&

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>

  • 问题:

    <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你。好眼力,好眼力!