3

我正在尝试获取页面上具有多个 div 作为子元素的所有元素。例如,在以下代码中:

<div id="1">
    <div id="1a">
        <div id="1aa">

        </div>
        <div id="1ab">

        </div>
    </div>
    <div id="1b">

    </div>
</div>
<div id="2">
    <div id="2b">

    </div>
</div>

我的函数会返回#1#1a因为它们都包含 2 个子 div。

我试过这个:

$('div > div + div').css("border", "1px solid red");

但这不仅不能按预期工作,我还希望它在有 5、6、7 /尽可能多的子 div 时应用,只要它是>=2.

实现这一目标的最佳方法是什么?

4

3 回答 3

6

您可以使用.filter().

$('div').filter(function() {
    return $(this).children('div').length >= 2;
}).css('border', '1px solid red');
于 2013-01-22T06:05:18.390 回答
2

或者...

$("div:has(>div:eq(1))")

js小提琴

向此选择器添加注释以解释其目的将是有益的,因为目前尚不清楚其意图是什么。

它没有使用标准 CSS,所以不能直接委托给querySelectorAll(). 如果您发现这是一个性能问题,只需将其拆分为多个块(可能filter()用于减少集合)。

于 2013-01-22T06:08:42.457 回答
0

可能你想要这样的东西:http: //jsfiddle.net/aJSbA/

if ($('div:has(div)').length) { // this will check if div has child div elem
    $('div > div').css("border", "1px solid red"); // applies css to its direct child
}
于 2013-01-22T06:14:22.783 回答