Bagaimana cara memilih DIV orang tua pertama menggunakan jQuery?


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

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

Orang tua dalam situasi di atas adalah seorang ankor.

Jika saya ingin mendapatkan DIV orang tua pertama dari $ (this) seperti apa kodenya?

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

* Pada dasarnya saya ingin mendapatkan kelas dari orang tua DIV pertama $ (ini).

Terima kasih

Jawaban:


161

Gunakan .closest()untuk melintasi pohon DOM hingga selektor yang ditentukan.

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

10
parents("div")sedang melintasi dan mengembalikan semua div induk yang harus Anda gunakan .eq(0)setelahnya untuk memastikan div hanya mengembalikan yang Anda inginkan
meo

3
Ingatlah bahwa lebih baik untuk kinerja untuk digunakan .parents('div').eq(0)- menggunakan selektor CSS dompet itu DIIKUTI oleh jQuery untuk memfilter hanya elemen pertama akan memberi Anda sedikit peningkatan kinerja - lihat bagian 'Catatan Tambahan' di jQuery: eq doc
Noah Whitmore

@NoahWhitmore Memperbaiki itu. Digunakan closest()agar tidak mengembalikan semua orang tua kecuali orang divtua.
Shef

41

Menggunakan .closest() , yang mendapatkan elemen leluhur pertama yang cocok dengan selektor yang diberikan 'div':

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

EDIT:

Seperti yang dicatat @Shef, .closest()akan mengembalikan elemen saat ini jika kebetulan itu adalah DIV juga. Untuk memperhitungkannya, gunakan .parent()dulu:

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

5
.closest()akan cocok dengan dirinya sendiri jika $(this)merupakan elemen DIV.
Shef

@Shef, itu info baru buat saya, terima kasih. Saya telah mengedit jawaban saya untuk mencerminkan ini.
Tatu Ulmanen

3
Anda cukup menggunakan.parents("div").eq(0)
meo

8

Ini mendapat induk jika itu adalah div. Kemudian mendapat kelas.

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

1
@meo Itulah pertanyaan yang diajukan.
Daniel West


0

dua dari opsi terbaik adalah

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

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

dan tentu saja Anda dapat menemukan atribut kelas dengan

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

$(this).parent().closest('div').attr("class")
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.