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

jquery : How to filter elements which have more than a specific number of children?

本文关键字:元素 何过滤 过滤 jquery      更新时间:2023-09-26

如何选择具有多个子元素的元素?

我有这样的东西:

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

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

或者有更好的方法吗?

至少有一个较短的

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

只有直系亲属的孩子,如果这是一个问题,你可以做

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

选择有3个或更多孩子的任何UL(eq为零(

FIDDLE

这应该有效:

var listsWithMoreChildren = $('ul').filter(function( index ) {
    return $(this).children().length > 2;
});
listsWithMoreChildren.css('background-color', '#ff0');

有关筛选器功能的更多信息,请阅读文档。http://api.jquery.com/filter/

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

使用find计算ul可用的子项数。

演示:

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

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/