我试图让页面上的所有元素都有多个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
。
实现这一目标的最佳途径是什么?
答案 0 :(得分:6)
您可以使用.filter()
。
$('div').filter(function() {
return $(this).children('div').length >= 2;
}).css('border', '1px solid red');
答案 1 :(得分:2)
...替代地
$("div:has(>div:eq(1))")
向此选择器添加注释以解释其目的是有益的,因为它不能立即清楚其意图是什么。
它不使用标准CSS,因此无法直接委托给querySelectorAll()
。如果您发现这是性能问题,只需将其拆分为其块(可能使用filter()
来减少集合)。
答案 2 :(得分: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
}