Tôi đã thêm thử nghiệm jsperf để xem sự khác biệt về tốc độ cho các cách tiếp cận khác nhau để có được đứa con đầu tiên (tổng số hơn 1000 trẻ em)
được, notif = $('#foo')
Các cách của jQuery:
$(":first-child", notif)
- 4.324 ops / giây - nhanh nhất
notif.children(":first")
- 653 ops / giây - chậm hơn 85%
notif.children()[0]
- 1,416 ops / giây - chậm hơn 67%
Cách bản địa:
- JavaScript bản địa '
ele.firstChild
- 4.934.323 ops / giây (tất cả các cách tiếp cận trên đều chậm hơn 100% so với firstChild
)
- Yêu tinh bản địa từ jQery:
notif[0].firstChild
- 4,913,658 ops / giây
Vì vậy, 3 cách tiếp cận jQuery đầu tiên không được khuyến nghị, ít nhất là đối với trẻ đầu tiên (tôi nghi ngờ đó cũng là trường hợp với nhiều phương pháp khác). Nếu bạn có một đối tượng jQuery và cần có con đầu tiên, thì hãy lấy phần tử DOM gốc từ đối tượng jQuery, sử dụng tham chiếu mảng [0]
(được khuyến nghị) hoặc .get(0)
sử dụng ele.firstChild
. Điều này cho kết quả giống hệt như sử dụng JavaScript thông thường.
tất cả các thử nghiệm được thực hiện trong Chrome Canary build v15.0.854.0