2010-07-26 5 views
5

Czy istnieje selektor rodzica jQuery, który przechodzi przez DOM do momentu znalezienia pierwszego dopasowania?selektory rodzica jQuery

Np

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

znaleźć wiersz z div Używam:

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

Czuje się jak będę mógł napisać coś takiego

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

ale nie mogę znaleźć y taka funkcja w dokumentach.

Odpowiedz

6

Można użyć .closest() na to:

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

Jeśli to pomoże, istnieje kategoria specjalnie do tego, aby zawęzić swoje przyszłe wyszukiwania do: Tree Traversal

+0

Dziękuję i pozdrawiam za link do drzewa. Nigdy bym tego nie uznał, wydaje się, że to bardzo źle nazwana imho funkcja. – fearofawhackplanet

+0

@patrick - Woops, dzięki! –

+0

@fearofawhackplanet - Kiedy przeszukujesz interfejs API: http://api.jquery.com/ znajdź funkcję, którą znasz będąc w tym samym obszarze, a po prawej stronie będą linki do kategorii, do której on należy, to zazwyczaj najszybsza trasa :) –

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

EDIT: A co powiedział Nick poniżej - zapomniałem o tym frajerze.

+0

+1 - Jest to odpowiednik ".closest ('tr') w długim dłonie", więc z pewnością poprawne podejście :) –

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

To nie zachowuje się tak, jak większość osób oczekuje, wybiera rodzica *, jeśli * To jest '', jeśli nie jest to '' otrzymujesz pusty zestaw. Selektor jest filtrem, a nie wyszukiwanym słowem, to odpowiednik '.parent(). Filter ('tr')' dla tego kroku :) –