2012-04-16 51 views
15
<div class="test"> 
<div class="example"></div> 
</div> 

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

Làm cách nào để áp dụng jQuery cho một phần tử với lớp test chỉ khi nó không chứa phần tử con với lớp example?Nếu phần tử gốc không chứa phần tử con nhất định; jQuery

+0

thể trùng lặp của [Làm thế nào để chọn các yếu tố mà không có một phần tử con cụ thể với JQuery] (http://stackoverflow.com/questions/7258606/how-to-select-elements-which-do -not-have-a-specific-child-element-with-jquery) – Jeroen

Trả lời

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

-hoặc-

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

Điều này làm việc tốt nhất, cảm ơn! – UserIsCorrupt

1

Bạn có thể sử dụng phương pháp children với ".example" và kiểm tra nếu nó là trống

1

jQuery :

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

Có thể

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

này lọc ra bất kỳ yếu tố có bất kỳ trẻ nào phù hợp với .example. Nếu bạn muốn lọc dựa trên con cháu (không chỉ trẻ em) mà bạn có thể thay thế .find cho .children.

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

Có thể như thế này? Tôi đã không kiểm tra này ...

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

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

2

Vấn đề này dường như làm sẵn cho filter chức năng nơi bạn tìm thấy tất cả các .test các đối tượng và sau đó khi lọc chỉ giữ lại những cái không có .example trong chúng:

$(".test").filter(function() { 
    return($(this).find(".example").length == 0); 
}); 
-1
if ($('#yourDiv').children().hasClass("className")) { 
    // yourDivID' has any children whose class name =>'className' 
} 
Các vấn đề liên quan