嗨我想要计算没有UL的LI,仅限第一级, 但是当我计算它时它显示大小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>
jQuery for this。
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);
});
JSBin上的测试link text的链接,
感谢
答案 0 :(得分:11)
您可以使用子选择器>
仅定位父项下的子元素。
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
中)来略微优化它:
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);
});
这将减少第二次查询DOM的开销。
答案 1 :(得分:9)
答案 2 :(得分:4)
$('.first-level > li:not(:has(ul))').size()