2012-04-16 3 views
15

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

+0

возможно дубликат [Как выбрать элементы, которые не имеют конкретного дочернего элемента с JQuery] (http://stackoverflow.com/questions/7258606/how-to-select-elements-which-do -not-have-a-specific-child-element-with-jquery) – Jeroen

ответ

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

-или-

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

Это работало лучше всего, спасибо! – UserIsCorrupt

1

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

1

JQuery :

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

Возможно

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

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

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

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

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

http://jsfiddle.net/DZZUZ/2/

2

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

$(".test").filter(function() { 
    return($(this).find(".example").length == 0); 
}); 
-1
if ($('#yourDiv').children().hasClass("className")) { 
    // yourDivID' has any children whose class name =>'className' 
} 
Смежные вопросы