如何选择包含多个孩子的元素?
我有这样的事情:
<ul>
<li>foo<li>
<li>foo<li>
<li>foo<li>
</ul>
<ul>
<li>foo<li>
<li>foo<li>
</ul>
<ul>
<li>foo<li>
<li>foo<li>
<li>foo<li>
</ul>
我正在使用这样的东西:
$('ul').each(function() {
if ($(this).children().length > 2) {
// do something
}
});
我想知道是否有更好的方式来选择孩子的数量?
或更好的方法吗?
答案 0 :(得分:4)
至少有一种更短的方式
$('ul:has(li:eq(2))')
仅限直系孩子,如果这是一个问题,你可以
$('ul:has( > li:eq(2))')
选择任何包含3个或更多子项的UL(eq为零)
答案 1 :(得分:1)
$('ul').each(function() {
if ($(this).find('li').length > 2) {
alert('hi');
}
});
使用find计算可用于ul的儿童数量。
演示:
答案 2 :(得分:1)
这应该有效:
var listsWithMoreChildren = $('ul').filter(function( index ) {
return $(this).children().length > 2;
});
listsWithMoreChildren.css('background-color', '#ff0');
有关过滤功能的更多信息,请阅读文档。 http://api.jquery.com/filter/
答案 3 :(得分:0)
var i = 0;
$('ul').each(function (index, ele) {
if ($(this).children().length > 0) i++;
})
alert('Total UL with children LI : ' + i);
<强> FIDDLE 强>