jquery:如何过滤具有超过特定数量的子元素的元素?

时间:2014-07-16 12:14:23

标签: javascript jquery

如何选择包含多个孩子的元素?

我有这样的事情:

<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
    }
});

我想知道是否有更好的方式来选择孩子的数量?

或更好的方法吗?

4 个答案:

答案 0 :(得分:4)

至少有一种更短的方式

$('ul:has(li:eq(2))')

仅限直系孩子,如果这是一个问题,你可以

$('ul:has( > li:eq(2))')

选择任何包含3个或更多子项的UL(eq为零)

FIDDLE

答案 1 :(得分:1)

$('ul').each(function() {
    if ($(this).find('li').length > 2) {
     alert('hi');
    }
});

使用find计算可用于ul的儿童数量。

演示:

http://jsfiddle.net/7GX9F/1/

答案 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

http://jsfiddle.net/nraina/GckZL/