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

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

test仅当它不包含带有类的子元素时,如何将 jQuery 应用于带有类的元素example

4

8 回答 8

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

-或者-

$('.test').not(':has(.example)')
于 2012-04-16T03:24:31.033 回答
5

可能

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

这会过滤掉任何具有匹配的子元素的元素.example.find如果您想根据可以替换的后代(而不仅仅是孩子)进行过滤.children

于 2012-04-16T03:09:25.577 回答
3
$(':not(.test:has(.example))').css('color', 'red');​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

http://jsfiddle.net/9fkz7y1g/

于 2012-04-16T03:19:33.753 回答
2

jQuery contains():

jQuery.contains(document.documentElement, document.body); // true
jQuery.contains(document.body, document.documentElement); // false
于 2012-04-16T03:08:50.320 回答
2

This problem seems ready-made for the filter function where you find all the .test objects and then when filtering retain only the ones that don't have .example in them:

$(".test").filter(function() {
    return($(this).find(".example").length == 0);
});
于 2012-04-16T04:35:25.933 回答
1

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

于 2012-04-16T03:07:17.740 回答
1
 $('.test').each(function() {
    if(!$(this).children().hasClass("example")){
       //your code
    }
}); 

也许像这样?这个我没测试过...

于 2012-04-16T03:17:07.723 回答
-1
if (!$('#yourDiv').children().hasClass("className")) {
    //i.e. yourDivID' has no any children whose class name =>'className'
}
于 2017-10-10T14:11:31.020 回答