2014-04-09 35 views
7

Böyle bir hiyerarşi var çok düzeyde belirleyin:jQuery .parent() yukarı

:

<search> 
    <inner> 
     <input/> 
     <p/> 
     <img/> 
    </inner> 
</search> 

Ne yapmaya çalışıyorum <input/> onFocus üst öğesini <search> seçmektir, ama bunu yaparsam

$(function(){ 
    $("input").focus(function(){ 
     console.log($(this).parent("search")); 
    }); 
}); 

Konsol boş bir dizi gösterir. Bir üst seviyeyi birden fazla seviye seçmek için temiz bir yol var mı? Bunu yapmamın tek yolu işe yarayacak olan .parent().parent("search") olurdu, ama çok temiz değil ve eğer bir ebeveyn 5 katman seçmeye çalışıyor olsaydım, sadece acımasız olurdu.

+1

http://api.jquery.com/closest/ –

cevap

19

.closest() deneyin:

sette her bir öğe için

, elemanı kendisini test ve DOM ağacındaki atalarından aracılığıyla yukarı yönde hareket ettirerek seçici eşleşen ilk elemanı olsun. the docs kaynaktan

$(this).closest("search") 
+0

Bu harika çalıştı! Teşekkürler! Bir yolu olmalıydı biliyordum. – David

+0

Bir günlüğe teşekkürler @Oriol –

3

:

.parents() ve .parent() yöntemleri ikinci levha yalnızca bir tek seviyesini DOM ağaç hareket dışında benzerdir.

$.parents kullanmayı deneyin.

+0

Bu da işe yaradı! Çok teşekkürler! – David