Si l'élément parent ne contient pas un certain élément enfant; jQuery

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

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

Comment appliquer jQuery à un élément de la classe test seulement s'il ne contient pas un élément enfant de la classe example ?

15
demandé sur UserIsCorrupt 2012-04-16 07:03:53

8 réponses

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

-ou-

$('.test').not(':has(.example)')
32
répondu vol7ron 2012-04-16 03:24:31

possible

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

cela filtre tous les éléments qui ont un enfant qui correspond à .example . Si vous voulez filtrer basé sur les descendants (pas seulement les enfants) que vous pouvez remplacer .find par .children .

4
répondu Jon 2012-04-16 03:09:25
$(':not(.test:has(.example))').css('color', 'red');​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

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

2
répondu Andreas Wong 2012-04-16 03:19:33

ce problème semble prêt pour la fonction filter où vous trouverez tous les objets .test et puis lors du filtrage ne retiennent que ceux qui n'ont pas .example en eux:

$(".test").filter(function() {
    return($(this).find(".example").length == 0);
});
2
répondu jfriend00 2012-04-16 04:35:25

, Vous pouvez utiliser la méthode enfants avec ".exemple "et tester s'il est vide

1
répondu Andrés 2012-04-16 03:07:17

jQuery contains() :

jQuery.contains(document.documentElement, document.body); // true
jQuery.contains(document.body, document.documentElement); // false
1
répondu Marc 2012-04-16 03:08:50
 $('.test').each(function() {
    if(!$(this).children().hasClass("example")){
       //your code
    }
}); 

peut-être comme ça? Je n'ai pas testé cette...

1
répondu hjuster 2012-04-16 03:17:07
if (!$('#yourDiv').children().hasClass("className")) {
    //i.e. yourDivID' has no any children whose class name =>'className'
}
-1
répondu Shekhar Kadam 2018-05-24 12:37:54