2010-10-13 17 views
6

Hay ben 'h2'jQuery chaining parent(), daha kolay bir yolu var mı?

içinde 'a' etiketine bakarak (bu) bu

$(this).parent().parent().attr("id") 

$ gibi bu

<div id="some-id"> 
    <h2><a href="#">Title</a></h2> 
</div> 

gibi bazı işaretlemeyi ve bazı jQuery var Ebeveyn div() öğesini iki kez kullanmadan seçmek için daha kolay bir yol var mı?

$(this).parent("div").attr("id") 

'u denedim, ancak çalışmadı.

Teşekkür

cevap

14

Bunu, .closest() kullanabilirsiniz:

$(this).closest("div").attr("id") 

You can test it here. .parent("div") göründüğü kadar kolay değil, sadece o seçici ile eşleşir eğer derhal ebeveyn alır .closest() anne o seçici ile eşleşir kadar tırmanıyor.

ki (bu örnekte için geçerli değildir) this seçici eşleşirse, o kendisi ile başlar, eleman, ilk ebeveyn ile değil başlangıç ​​ yapar olduğunu döndürür unutmayınız.

+0

.closest() yalnızca yukarı mı taşıyor? Yoksa aynı şekilde mi hareket edecek? – dotty

+0

@dotty - Sadece ebeveynlere gidiyor, eğer çocukları bulmak istiyorsanız .find() ', sadece bir ebeveyn yolunuz olsa da, çocukların çok fazla dalı olabilir ... bu yüzden peşinden ne olduğuna bağlı. –