Javascript 没有ul的李怎么算?

Javascript 没有ul的李怎么算?,javascript,jquery,html,Javascript,Jquery,Html,嗨,我想数一数没有UL认证的李,只针对第一级, 但是当我数这个的时候,它显示的是4号而不是2号,它的计数也是内部的LI <div class="navigation-container"> <ul class="first-level"> <li><a href="#">Link 1</a></li> <li><a href="#">Link 2</a>

嗨,我想数一数没有UL认证的李,只针对第一级, 但是当我数这个的时候,它显示的是4号而不是2号,它的计数也是内部的LI

<div class="navigation-container">
    <ul class="first-level">
      <li><a href="#">Link 1</a></li>
      <li><a href="#">Link 2</a>
        <ul>
          <li><a href="#">Link2.1</a></li>
          <li><a href="#">Link2.2</a>
            <ul>
                <li><a href="#">Link 2.2.1</a></li>
            </ul>
          </li>
        </ul>
      </li>
      <li><a href="#">Link </a></li>
    </ul>  
  </div>
用于测试JSBin的链接


谢谢

我不确定我读的是否正确,但是

$('ul.first-level > li:not(:first)').length

返回2 for me()

您可以使用子选择器
仅针对父元素正下方的子元素

jQuery(document).ready(function(){

  var nosubnav = jQuery('.first-level > li:not(:has(ul))');
  var nosubnavsize = jQuery('.first-level > li:not(:has(ul))').size();
  jQuery(nosubnav).css('border' , '1px solid red');
  alert('List item which does not have submenu  '+nosubnavsize);

});
这将返回2的计数。您还可以通过重用存储的目标li选择(存储在
nosubnav
中)来稍微优化这一点:

这将减少再次查询DOM的开销

$('.first-level > li:not(:has(ul))').size()
jQuery(document).ready(function(){

  var nosubnav = jQuery('.first-level > li:not(:has(ul))');
  nosubnav.css('border' , '1px solid red');
  alert('List item which does not have submenu  '+nosubnav.length);

});
$('.first-level > li:not(:has(ul))').size()