2010-07-26 23 views
5

İlk eşleşme bulunana kadar DOM'yi geçecek bir jQuery üst seçici var mı?jQuery üst selektörleri

Örn:

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

Ben

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

gibi bir şey yazmak mümkün olmalıdır gibi hissediyor:

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

kullanıyorum div gelen satır bulmak için

ancak bulamıyorum Dokümanlardaki böyle bir işlev.

Bunun için .closest() kullanabilirsiniz

cevap

6

:

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

Eğer yardımı olacaksa, orada buna Gelecekte aramalarınızı daraltmak için özel olarak bir kategori var: Tree Traversal

+0

Ağaç traversal bağlantısı için teşekkürler ve şerefe. Asla bulamadım, oldukça kötü bir işlev imho gibi görünüyor. – fearofawhackplanet

+0

@patrick - Woops, teşekkürler! –

+0

@fearofawhackplanet - API'yi aradığınızda: http://api.jquery.com/ aynı alanda olduğunuzu bildiğiniz bir işlevi bulursanız, sağ tarafta ise ait olduğu kategorilere ait bağlantılar bulunur. en hızlı rota :) –

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

Düzenleme: Ya da ne Nick aşağıda adı geçen - Bu enayi hakkında unuttum.

+0

+1 - Bu, '.closest ('tr')' ın uzun el eşdeğeridir, yani kesinlikle geçerli bir yaklaşımdır :) –

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

Bu, çoğu insanın beklediği gibi davranmaz; * 'dır, eğer ' ise, boş bir set alırsınız. Seçici, bir arama teriminden ziyade bir filtredir, bu adım için '.parent(). Filter ('tr')' değerine eşdeğerdir :) –