Saya telah mendengar bahwa querySelector
& querySelectorAll
adalah metode baru untuk memilih DOM
elemen. Bagaimana cara membandingkannya dengan metode lama, getElementById
& getElementsByClassName
dalam hal kinerja dan dukungan browser?
Bagaimana kinerja dibandingkan dengan menggunakan pemilih kueri jQuery?
Apakah ada rekomendasi praktik terbaik untuk kumpulan asli yang akan digunakan?
javascript
jquery
dom
goesToEleven
sumber
sumber
getElementById
dangetElementsByClassName
masih ideal untuk tujuan yang dijelaskan oleh namanya.qS/qSA
dapat digunakan dari konteks elemen apa pun, tetapigEBI
hanya dapat digunakan daridocument
konteks tersebut.getElementById
cocok denganid
atribut untuk menemukan simpul DOM, sementaraquerySelector
pencarian oleh pemilih. Jadi untuk pemilih misalnya tidak valid<div id="1"></div>
,getElementById('1')
akan bekerja sementaraquerySelector('#1')
akan gagal, kecuali Anda kirim untuk mencocokkanid
atribut (misalnyaquerySelector('[id="1"]')
.querySelector
danquerySelectorAll
didukung penuh sekarang. caniuse.com/#feat=queryselectorJawaban:
"Lebih baik" itu subjektif.
querySelector
adalah fitur yang lebih baru.getElementById
lebih baik didukung daripadaquerySelector
.querySelector
lebih baik didukung daripadagetElementsByClassName
.querySelector
memungkinkan Anda menemukan elemen dengan aturan yang tidak dapat diekspresikan dengangetElementById
dangetElementsByClassName
Anda perlu memilih alat yang sesuai untuk tugas apa pun.
(Di atas, untuk
querySelector
dibacaquerySelector
/querySelectorAll
).sumber
getElementById
>querySelector
>getElementsByClassName
, karena saya pikirgetElementsByClassName
harus memiliki tingkat dukungan yang sama sepertigetElementById
?Fungsi
getElementById
dangetElementsByClassName
sangat spesifik, sementaraquerySelector
danquerySelectorAll
lebih rumit. Dugaan saya adalah bahwa mereka sebenarnya akan memiliki kinerja yang lebih buruk.Selain itu, Anda perlu memeriksa dukungan dari setiap fungsi di browser yang Anda targetkan. Semakin baru, semakin tinggi kemungkinan kurangnya dukungan atau fungsinya menjadi "buggy".
sumber
nodelist ... is not live
bisakah Anda memberikan dokumentasi untuk itu? @ W.Prins kedua metode mengembalikanElement
tipe.