0 votes

Comment puis-je sélectionner des éléments vivant dans une certaine plage de la hiérarchie du DOM ?

J'ai un élément DOM C qui est un descendant de l'élément DOM A . Il y a plusieurs couches entre eux, l'une d'entre elles étant une classe d'éléments nommée B .

Si tengo jQuery("#A") y jQuery("#C) comment puis-je trouver l'élément parent de C avec la classe B qui est également un descendant de A ?

Si j'utilise parents() de C alors je pourrais potentiellement obtenir tous les éléments avec la classe B qui sont au-dessus de A ce que je ne veux pas. Si j'utilise find() de A alors je pourrais obtenir les éléments ci-dessous C ce que je ne veux pas.

Le nombre de couches entre chacun des éléments qui m'intéressent n'est pas connu. Bien que l'exemple montre une seule couche, ce qui me permettrait de faire .children().children() je ne peux pas être certain qu'il n'y a que deux niveaux.

par exemple

...
<div id="A">
 <div>
   <div class="B">
     <div>
       <div id="C">...</div>
     </div>
   </div>
 </div>
</div>

1voto

Reigel Points 34008

Dans cette situation, vous devez .closest()

$('#C').closest('.B') // would get the closest parent(.B) of a child(#C)

1voto

David Points 36241
$('#C').closest('.B').filter(function() {
    return $(this).closest('#A').length;
});

Vous n'avez pas besoin du filtre si vous savez que la div.B la plus proche sera toujours en dessous de #A.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X