Ответ 1
$('.test:not(:has(.example))')
-или -
$('.test').not(':has(.example)')
<div class="test">
<div class="example"></div>
</div>
<div class="test">
</div>
Как я могу применить jQuery к элементу с классом test
, только если он не содержит дочерний элемент с классом example
?
$('.test:not(:has(.example))')
-или -
$('.test').not(':has(.example)')
Возможно
$('.test').filter(function() { return !$(this).children('.example').length; });
Отфильтровывает любые элементы, которые имеют любой дочерний элемент, который соответствует .example
. Если вы хотите отфильтровать на основе потомков (а не только детей), которые вы можете заменить .find
на .children
.
$(':not(.test:has(.example))').css('color', 'red');
Эта проблема кажется готовой для функции filter
, где вы найдете все объекты .test
, а затем при фильтрации сохраняются только те, у которых в них нет .example
:
$(".test").filter(function() {
return($(this).find(".example").length == 0);
});
Вы можете использовать метод children с ".example" и проверить, если он пуст
jQuery contains()
:
jQuery.contains(document.documentElement, document.body); // true
jQuery.contains(document.body, document.documentElement); // false
$('.test').each(function() {
if(!$(this).children().hasClass("example")){
//your code
}
});
Может быть, так? Я не тестировал это...
if (!$('#yourDiv').children().hasClass("className")) {
//i.e. yourDivID' has no any children whose class name =>'className'
}