ฉันได้เพิ่มการทดสอบjsperfเพื่อดูความแตกต่างความเร็วสำหรับวิธีการต่าง ๆ เพื่อรับลูกคนแรก (รวม 1,000+ เด็ก)
ได้รับ notif = $('#foo')
วิธี jQuery:
$(":first-child", notif)
- 4,304 ops / วินาที - เร็วที่สุด
notif.children(":first")
- 653 ops / วินาที - ช้าลง 85%
notif.children()[0]
- 1,416 ops / วินาที - ช้าลง 67%
วิธีพื้นเมือง:
- JavaScript ดั้งเดิม '
ele.firstChild
- 4,934,323 ops / วินาที (วิธีการทั้งหมดข้างต้นช้ากว่า 100% เมื่อเทียบกับfirstChild
)
- Native DOM ele จาก jQery:
notif[0].firstChild
- 4,913,658 ops / วินาที
ดังนั้นไม่แนะนำ 3 jQuery วิธีแรกอย่างน้อยสำหรับลูกคนแรก (ฉันสงสัยว่าจะเป็นเช่นนี้กับคนอื่น ๆ ด้วย) หากคุณมีวัตถุ jQuery และความต้องการที่จะได้รับเป็นครั้งแรกที่เด็กแล้วได้รับองค์ประกอบ DOM พื้นเมืองจากวัตถุ jQuery ใช้อ้างอิงอาร์เรย์[0]
(แนะนำ)หรือและใช้.get(0)
ele.firstChild
สิ่งนี้ให้ผลลัพธ์ที่เหมือนกันเหมือนกับการใช้งาน JavaScript ปกติ
การทดสอบทั้งหมดเสร็จสิ้นใน Chrome Canary build v15.0.854.0