Untuk memberikan contoh yang disederhanakan, saya memiliki blok berikut yang diulangi di halaman berkali-kali (ini dibuat secara dinamis):
<div class="box">
<div class="something1"></div>
<div class="something2">
<a class="mylink">My link</a>
</div>
</div>
Saat diklik, saya bisa membuka link induk dengan:
$(".mylink").click(function() {
$(this).parents(".box").fadeOut("fast");
});
Namun ... Saya harus membahas salah <div class="something1">
satu orang tua itu.
Pada dasarnya, dapatkah seseorang memberi tahu saya cara merujuk pada saudara tingkat yang lebih tinggi tanpa dapat merujuknya secara langsung? Sebut saja kakak. Referensi langsung ke nama kelas kakak laki-laki akan menyebabkan setiap contoh elemen di halaman memudar - yang bukan merupakan efek yang diinginkan.
Saya sudah mencoba:
parents(".box .something1") ... no luck.
parents(".box > .something1") ... no luck.
siblings() ... no luck.
Siapa saja? Terima kasih.
.parent()
tidak.parents()
Jawaban:
Memanggil
.parents(".box .something1")
akan mengembalikan semua elemen induk yang cocok dengan selektor.box .something
. Dengan kata lain, ini akan mengembalikan elemen induk yang ada.something1
dan berada di dalam.box
.Anda perlu mendapatkan anak dari orang tua terdekat, seperti ini:
Kode ini memanggil
.closest
untuk mendapatkan induk terdalam yang cocok dengan selektor, kemudian memanggil.children
elemen induk tersebut untuk menemukan paman yang Anda cari.sumber
parent()
adalah elemen yang salah..closest(...)
lebih tangguh, dan lebih mudah dibaca juga.Penjelajahan pohon memang menyenangkan
Dan lebih banyak lagi cara, dokumen ini mungkin berguna bagi Anda.
sumber
Ini akan menemukan orang tua pertama dengan kelas
box
kemudian menemukan kelas anak pertama dengan pencocokan regexsomething
dan mendapatkan id.sumber
Jika saya memahami masalah Anda dengan benar,
$(this).parents('.box').children('.something1')
Apakah ini yang Anda cari?sumber
Anda bisa menggunakan
.each()
dengan.children()
dan selektor di dalam tanda kurung:sumber