JQuery kullanarak ilk üst DIV nasıl seçilir?


96
var classes = $(this).attr('class').split(' '); // this gets the current element classes

var classes = $(this).parent().attr('class').split(' '); // this gets the parent classes.

Yukarıdaki durumdaki ebeveyn bir ankordur.

$ (This) değerinin ilk üst DIV'sini almak isteseydim, kod neye benzerdi?

var classes = $(this).div:parent().attr('class').split(' '); // just a quick try.

* Temel olarak $ (this) 'in ilk üst DIV'sinin sınıflarını almak istiyorum.

Teşekkürler

Yanıtlar:


161

Kullanım .closest()belirtilen seçicinin DOM ağacı yukarı hareket etmesi.

var classes = $(this).parent().closest('div').attr('class').split(' '); // this gets the parent classes.

10
parents("div")geçiş yapıyor ve .eq(0)yalnızca istediğinizi döndürdüğünden emin olmak için sonrasında kullanmanız gereken tüm üst div'leri döndürüyor
meo

3
Performans için kullanmanın daha iyi olduğunu unutmayın .parents('div').eq(0)- jQuery tarafından TAKİP EDİLEN bu çanta CSS seçicisini kullanarak yalnızca ilk öğeyi filtrelemek size hafif bir performans artışı sağlayacaktır - jQuery'deki 'Ek Notlar' bölümüne bakın : eq doc
Noah Whitmore

@NoahWhitmore Düzeltildi. closest()Ebeveyn hariç tüm ebeveynleri döndürmeyecek şekilde kullanılır div.
Shef

41

.closest()Verilen seçiciyle eşleşen ilk üst öğe öğesini alan kullanın 'div':

var classes = $(this).closest('div').attr('class').split(' ');

DÜZENLE:

@Shef'in belirttiği gibi, .closest()aynı zamanda bir DIV ise mevcut öğeyi döndürecektir. Bunu hesaba katmak için .parent()önce şunu kullanın :

var classes = $(this).parent().closest('div').attr('class').split(' ');

5
.closest()$(this)DIV öğesi ise kendisiyle eşleşir .
Shef

@Shef, bu benim için yeni bir bilgiydi, teşekkürler. Cevabımı bunu yansıtacak şekilde düzenledim.
Tatu Ulmanen

3
basitçe kullanabilirsiniz.parents("div").eq(0)
meo

8

Bu bir div ise ebeveyni alır. Sonra ders alır.

var div = $(this).parent("div");
var _class = div.attr("class");

1
@meo Soru sorulan buydu.
Daniel West


0

en iyi seçeneklerden ikisi

$(this).parent("div:first")

$(this).parent().closest('div')

ve elbette sınıfın özünü şu şekilde bulabilirsiniz:

$(this).parent("div:first").attr("class")

$(this).parent().closest('div').attr("class")
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.