Как выбрать элемент, который не содержит определенного дочернего элемента?

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

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

Как я могу применить jQuery к элементу с классом test, только если он не содержит дочерний элемент с классом example?

Ответ 1

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

-или -

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

Ответ 2

Возможно

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

Отфильтровывает любые элементы, которые имеют любой дочерний элемент, который соответствует .example. Если вы хотите отфильтровать на основе потомков (а не только детей), которые вы можете заменить .find на .children.

Ответ 3

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

http://jsfiddle.net/9fkz7y1g/

Ответ 4

Эта проблема кажется готовой для функции filter, где вы найдете все объекты .test, а затем при фильтрации сохраняются только те, у которых в них нет .example:

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

Ответ 5

Вы можете использовать метод children с ".example" и проверить, если он пуст

Ответ 6

jQuery contains():

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

Ответ 7

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

Может быть, так? Я не тестировал это...

Ответ 8

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