如何选择不包含某个子元素的元素?

时间:2012-04-16 03:03:54

标签: javascript jquery

<div class="test">
 <div class="example"></div>
</div>

<div class="test">
</div>

如果jQuery不包含类test的子元素,我怎样才能将jQuery应用于具有类example的元素?

8 个答案:

答案 0 :(得分:38)

$('.test:not(:has(.example))')

-OR -

$('.test').not(':has(.example)')

答案 1 :(得分:4)

可能

$('.test').filter(function() { return !$(this).children('.example').length; });

这会筛选出任何与.example匹配的子元素。如果您想根据后代(而不仅仅是孩子)进行过滤,可以将.find替换为.children

答案 2 :(得分:3)

$(':not(.test:has(.example))').css('color', 'red');​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

http://jsfiddle.net/9fkz7y1g/

答案 3 :(得分:2)

此问题似乎已准备好filter函数,您可以在其中找到所有.test个对象,然后在过滤时只保留其中没有.example的对象:< / p>

$(".test").filter(function() {
    return($(this).find(".example").length == 0);
});

答案 4 :(得分:1)

您可以将方法children与“.example”一起使用,并测试它是否为空

答案 5 :(得分:1)

jQuery contains()

jQuery.contains(document.documentElement, document.body); // true
jQuery.contains(document.body, document.documentElement); // false

答案 6 :(得分:1)

 $('.test').each(function() {
    if(!$(this).children().hasClass("example")){
       //your code
    }
}); 

也许是这样的?我没有测试过这个...

答案 7 :(得分:-1)

if (!$('#yourDiv').children().hasClass("className")) {
    //i.e. yourDivID' has no any children whose class name =>'className'
}