Comment sélectionner des éléments enfants mais un seul niveau avec jQuery
Donné ceci:
<div id="div1">
<div id="div2">
<div id="div200">
<div id="div3" class="b">
</div>
<div id="div300">
<div id="div4" class="b">
<div id="div5">
<div id="div6" class="b">
</div>
</div>
</div>
<div>
<div>
<div>
</div>
J'ai besoin d'un moyen pour trouver les enfants (profondeur) d'un élément de classe "b", mais pas ceux qui sont imbriquées à l'intérieur correspond un élément.
Cas de Test:
C'est ce dont j'ai besoin:
Cas 1:
$("#div1").some_jquery_syntax(".b")
Should return:
div3, div4
Cas 2:
$("#div5").some_jquery_syntax(".b")
Should return:
div6
Noter que la partie la plus difficile est que je dois avoir à sauter div2 lors du démarrage à partir div1. Donc je ne peut pas utiliser de $("#div1").find("> .b")
.
Mes tentatives:
J'ai essayé ceci:
$("#div1").find(".b")
[<div id="div3" class="b"></div>, <div id="div4" class="b"></div>, <div id="div5" class="b"></div>]
Pas bon: je ne veux pas div5 parce qu'elle est imbriquée à l'intérieur d'div4.
J'ai essayé ceci:
$("#div0").find(".b").not(".b .b")
[<div id="div3" class="b"></div>, <div id="div4" class="b"></div>]
Qui est ok lors du démarrage avec div0, mais il ne fonctionne pas en précisant de div4:
$("#div5").find(".b").not(".b .b")
[]
source d'informationauteur Sylvain
Vous devez vous connecter pour publier un commentaire.
Trouver l'immédiat petits-enfants:
Violon: http://jsfiddle.net/jonathansampson/Dy6GJ/
Si vous ne savez pas à quelle profondeur, mais souhaitez tout
.b
pas dans un.b
utiliser un filtre tout en respectant parent limites. Vous pouvez utiliser le.parentsUntil
méthode:Violon: http://jsfiddle.net/jonathansampson/Dy6GJ/3/
Général (uniquement lorsque la classe ne peut être garantie):
Comme décrit (probablement plus rapide que le général, mais non testé):
"Tous les .b qui ne sont pas descendants de .b"