Untuk beberapa alasan kinerja, saya mencoba menemukan cara untuk memilih hanya simpul saudara dari simpul yang dipilih.
Sebagai contoh,
<div id="outer">
<div id="inner1"></div>
<div id="inner2"></div>
<div id="inner3"></div>
<div id="inner4"></div>
</div>
Jika saya memilih node inner1, apakah ada cara bagi saya untuk mengakses saudara kandungnya, inner2-4
node?
javascript
dom
siblings
codingbear
sumber
sumber
Ini akan mengembalikan saudara segera setelahnya, atau null tidak ada saudara lagi yang tersedia. Demikian juga, Anda bisa menggunakan
previousSibling
.[Sunting] Setelah dipikir-pikir, ini tidak akan memberikan
div
tag berikutnya , tetapi spasi setelah node. Sepertinya lebih baikAda juga ada
previousElementSibling
.sumber
Cepat:
https://codepen.io/anon/pen/LLoyrP?editors=1011
Dapatkan turunan orang tua sebagai array, filter elemen ini.
Edit:
Dan untuk menyaring node teks (Terima kasih pmrotule ):
sumber
[ ...n.parentNode.children ].filter(c => c.nodeType == 1 && c != n)
Dari 2017:
jawaban langsung:
element.nextElementSibling
untuk mendapatkan saudara elemen yang tepat. juga Anda milikielement.previousElementSibling
untuk yang sebelumnyadari sini cukup mudah untuk mendapatkan semua saudara kandung berikutnya
sumber
next
atauprevious
. Menentukan secara tepat mundur atau maju tidak banyak membantu dalam kasus ini.sudahkah Anda memeriksa metode "Sibling" di jQuery?
n.nodeType == 1 periksa apakah elemennya adalah node html dan n! == mengecualikan elemen saat ini.
Saya pikir Anda dapat menggunakan fungsi yang sama, semua kode itu tampaknya javascript vanilla.
sumber
Ada beberapa cara untuk melakukannya.
Salah satu dari yang berikut ini seharusnya berhasil.
FYI: Basis kode jQuery adalah sumber daya yang bagus untuk mengamati JavaScript Tingkat A.
Berikut adalah alat luar biasa yang mengungkapkan basis kode jQuery dengan cara yang sangat efisien. http://james.padolsey.com/jquery/
sumber
Inilah cara Anda mendapatkan saudara sebelumnya, berikutnya, dan semua (kedua sisi):
sumber
Gunakan document.querySelectorAll () dan Loop dan iterasi
sumber
jQuery
Asli - terbaru, Edge13 +
Asli (alternatif) - terbaru, Edge13 +
Asli - IE10 +
sumber
sumber
1) Tambahkan kelas yang dipilih ke elemen target
2) Temukan semua turunan dari elemen induk tidak termasuk elemen target
3) Hapus kelas dari elemen target
sumber
Fungsi berikut akan mengembalikan larik yang berisi semua saudara kandung dari elemen yang diberikan.
Cukup berikan elemen yang dipilih ke dalam
getSiblings()
fungsi sebagai satu-satunya parameter.sumber
sumber