Saya telah menambahkan tes jsperf untuk melihat perbedaan kecepatan untuk berbagai pendekatan untuk mendapatkan anak pertama (total 1000+ anak)
diberikan, notif = $('#foo')
Cara jQuery:
$(":first-child", notif)
- 4.304 ops / dtk - tercepat
notif.children(":first")
- 653 ops / detik - 85% lebih lambat
notif.children()[0]
- 1.416 ops / detik - 67% lebih lambat
Cara asli:
- JavaScript asli '
ele.firstChild
- 4,934,323 ops / detik (semua pendekatan di atas 100% lebih lambat dibandingkan dengan firstChild
)
- Elemen DOM asli dari jQery:
notif[0].firstChild
- 4,913.658 ops / dtk
Jadi, 3 pendekatan jQuery pertama tidak dianjurkan, setidaknya untuk anak pertama (saya ragu itu akan menjadi masalah dengan banyak lainnya juga). Jika Anda memiliki objek jQuery dan perlu mendapatkan anak pertama, maka dapatkan elemen DOM asli dari objek jQuery, menggunakan referensi array [0]
(disarankan) atau .get(0)
dan gunakan ele.firstChild
. Ini memberikan hasil yang sama identik dengan penggunaan JavaScript biasa.
semua tes dilakukan di Chrome Canary build v15.0.854.0