2010-07-26 10 views
5

Existe-t-il un sélecteur parent jQuery qui parcourt le DOM jusqu'à ce que la première correspondance soit trouvée?Sélecteurs parent jQuery

Par exemple:

<tr> 
    <td> 
     <div id="foo">hello!</div> 
    </td> 
</tr> 

pour trouver la ligne de la div J'utilise:

$('#foo').parent().parent();

On dirait que je devrais être capable d'écrire quelque chose comme

$('#foo').firstParent('tr');

mais je ne peux pas trouver un y une telle fonction dans les docs.

Répondre

6

Vous pouvez utiliser .closest() pour cela:

$('#foo').closest('tr'); 

Si elle aide, il y a une catégorie spécifique pour ce pour affiner vos recherches futures à: Tree Traversal

+0

Merci et applaudissements pour le lien de traversée de l'arbre. Je n'aurais jamais trouvé cela, semble une fonction assez mal nommée à mon humble avis. – fearofawhackplanet

+0

@patrick - Woops, merci! –

+0

@fearofawhackplanet - Lorsque vous effectuez une recherche dans l'API: http://api.jquery.com/, vous trouvez une fonction dans la même zone, et à droite, des liens vers les catégories auxquelles elle appartient. le chemin le plus rapide :) –

1
$(element).parents('TR:first'); 

Edit: Ou ce que Nick dit ci-dessous - oublié de ce meunier.

+0

+1 - Ceci est l'équivalent en main de '.closest ('tr')' donc certainement une approche valide :) –

0
$('#foo').parent('tr') 
+0

Cela ne se comporte pas comme la plupart des gens s'attendent, il sélectionne le parent * si * c'est un '', si ce n'est pas un '' vous obtenez un ensemble vide. Le sélecteur est un filtre, plutôt qu'un terme de recherche, c'est équivalent à '.parent(). Filter ('tr')' pour cette étape :) –