2010-07-23 4 views
0

J'ai un élément DOM C qui est un descendant de l'élément DOM A. Il y a plusieurs couches entre elles, dont l'une est une classe d'élément nommée B.Comment puis-je sélectionner des éléments vivant dans une certaine plage de la hiérarchie DOM?

Si je jQuery("#A") et jQuery("#C), comment puis-je trouver l'élément parent de la classe CB, qui est aussi un descendant de A?

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

Le nombre de couches entre chacun des éléments qui m'intéressent n'est pas connu. Alors que l'exemple montre un seul calque, ce qui me permettrait de faire .children().children(), je ne peux pas être certain que c'est seulement 2 niveaux.

par exemple.

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

Répondre

1

dans cette situation, vous avez besoin .closest()

$('#C').closest('.B') // would get the closest parent(.B) of a child(#C) 
1
$('#C').closest('.B').filter(function() { 
    return $(this).closest('#A').length; 
}); 

Vous ne avez pas besoin du filtre si vous savez que le plus proche div.B sera toujours en dessous #Un

Questions connexes