2010-07-26 17 views
5

C'è un selettore genitore jQuery che attraversa il DOM finché non viene trovata la prima corrispondenza?selettori genitore jQuery

Esempio:

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

per trovare la riga dalla div sto usando:

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

Ci si sente come dovrei essere in grado di scrivere qualcosa di simile

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

ma non riesco a trovare un y tale funzione nei documenti.

risposta

6

È possibile utilizzare .closest() per questo:

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

Se aiuta, c'è una categoria appositamente per questo per restringere le ricerche future: Tree Traversal

+0

Grazie e saluti per il collegamento traversale dell'albero. Non l'avrei mai trovato, sembra una funzione piuttosto mal chiamata imho. – fearofawhackplanet

+0

@patrick - Woops, grazie! –

+0

@fearofawhackplanet - Quando cerchi l'API: http://api.jquery.com/ trova una funzione che sai essere nella stessa area, e sulla destra avrà i collegamenti alle categorie a cui appartiene, che di solito è il percorso più veloce :) –

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

Edit: O che Nick ha detto di seguito - Dimenticavo quel pollone.

+0

+1 - Questo è l'equivalente a mano lunga di '.closest ('tr')' quindi sicuramente un approccio valido :) –

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

Questo non si comporta come la maggior parte delle persone si aspetta, seleziona il genitore * se * è un '', se non è un '' si ottiene un set vuoto. Il selettore è un filtro, piuttosto che un termine di ricerca, è equivalente a '.parent(). Filter ('tr')' per quel passaggio :) –