Misalnya, ada 10 LIS dalam satu UL, dan ada gaya khusus pada Li ketiga (seperti warnanya merah, dan yang lainnya hitam). Saya ingin mengatur warna semua LIS lainnya - tidak termasuk LIS merah - menjadi merah. Pada saat ini, Anda perlu mendapatkan semua node Brother dari Red Lis.
Saudara -saudara adalah mereka yang sama dengan Anda, baik sebelumnya atau berikutnya, dan mungkin ada (saudara) yang lebih tua dari Anda atau lebih muda dari Anda. Demikian pula, node saudara digunakan. Berikut adalah cara reguler untuk mendapatkan node saudara.
Kodenya adalah sebagai berikut
fungsi saudara kandung (elm) {var a = []; var p = elm.parentnode.children; for (var i = 0, pl = p.length; i <pl; i ++) {if (p [i]! == elm) a.push (p [i]);} return a;}Ide: Pertama dapatkan semua anak dari simpul orang tua dari elemen ini. Karena semua anak juga memasukkan elemen ini sendiri, Anda harus menghapus diri Anda dari hasilnya.
Ada metode lain yang terlihat aneh, yaitu mendapatkan kode sumber node saudara di jQuery:
Kodenya adalah sebagai berikut
fungsi saudara kandung (elem) {var r = []; var n = elem.parentnode.firstchild; untuk (; n; n = n.nextsibling) {if (n.nodetype === 1 && n! == elem) {r.push (n);}} return r;}Ide: Pertama temukan simpul anak pertama dari simpul induk dari elemen ini, dan kemudian loop untuk menemukan node saudara berikutnya dari simpul ini sampai pencarian selesai.
Saya bertanya -tanya mengapa jQuery menggunakan metode ini. Apakah metode ini lebih efisien daripada metode pertama?
Setelah tes pendahuluan saya - lebih dari 1.500 Li, dua metode di atas hampir tidak memiliki perbedaan dalam efisiensi, dan keduanya berhasil dalam beberapa milidetik. Lingkungan uji adalah Chrome dan Firefox.
Jika Anda memiliki kebutuhan untuk mendapatkan semua node saudara, Anda dapat menggunakan salah satu metode di atas.
Tentu saja, saya akan memverifikasi dua metode di atas di masa depan. Jika ada perbedaan, saya akan memperbaruinya.
Metode Pencarian Node, Putra, dan Brother Node JQuery
jQuery.parent (expr) Temukan node induk, Anda dapat lulus dalam expr untuk penyaringan, seperti $ ("span"). Parent () atau $ ("span"). Parent (".
jQuery.Parents (expr), mirip dengan jQuery.parents (expr), tetapi mencari semua elemen leluhur, tidak terbatas pada elemen induk
jQuery.Children (expr). Mengembalikan semua node anak. Metode ini hanya akan mengembalikan node anak langsung dan tidak akan mengembalikan semua node anak.
jQuery.contents (), mengembalikan semua konten berikut, termasuk node dan teks. Perbedaan antara metode ini dan anak -anak () adalah bahwa, termasuk teks kosong, juga akan digunakan sebagai a
JQuery Object Returns, Children () hanya akan mengembalikan node
jQuery.prev (), mengembalikan node saudara kandung sebelumnya, tidak semua node saudara kandung
jQuery.prevall (), kembalikan semua node saudara kandung sebelumnya
jQuery.next (), mengembalikan node saudara berikutnya, tidak semua node saudara kandung
jQuery.nextall (), kembalikan semua node saudara kandung berikutnya
jQuery.siblings (), mengembalikan simpul saudara, terlepas dari bagian depan dan belakang
jQuery.find (expr), benar -benar berbeda dari jQuery.filter (expr). jQuery.filter () adalah untuk menyaring bagian dari koleksi objek jQuery awal, sementara jQuery.find ()
Hasil pengembalian tidak akan memiliki konten dalam koleksi awal, seperti $ ("p"), find ("span"), mulailah mencari <span> dari elemen <p>, yang setara dengan $ ("p span")
Artikel di atas JS untuk mendapatkan semua node saudara dari elemen adalah semua konten yang saya bagikan dengan Anda. Saya harap Anda dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.