ด้วย Jquery ฉันต้องเลือกเฉพาะรายการ "n" แรกจากหน้าเช่นลิงก์ 20 รายการแรกแทนที่จะเลือกทั้งหมดด้วยวิธีปกติ
$("a")
ฟังดูง่าย แต่คู่มือ jQuery ไม่มีหลักฐานอะไรเช่นนี้
ด้วย Jquery ฉันต้องเลือกเฉพาะรายการ "n" แรกจากหน้าเช่นลิงก์ 20 รายการแรกแทนที่จะเลือกทั้งหมดด้วยวิธีปกติ
$("a")
ฟังดูง่าย แต่คู่มือ jQuery ไม่มีหลักฐานอะไรเช่นนี้
คำตอบ:
ใช้ตัวเลือก lt pseudo:
$("a:lt(n)")
สิ่งนี้ตรงกับองค์ประกอบก่อนที่หนึ่ง (องค์ประกอบที่ n ที่ยกเว้น) การกำหนดหมายเลขเริ่มต้นจาก 0
ฉันพบบันทึกนี้ในตอนท้ายของเอกสารlt () :
หมายเหตุเพิ่มเติม:
เนื่องจาก: lt () เป็นส่วนขยาย jQuery และไม่ได้เป็นส่วนหนึ่งของข้อมูลจำเพาะ CSS การสืบค้นโดยใช้: lt () ไม่สามารถใช้ประโยชน์จากการเพิ่มประสิทธิภาพที่มีให้โดยวิธี native DOM querySelectorAll () เพื่อประสิทธิภาพที่ดีขึ้นในเบราว์เซอร์สมัยใหม่ให้ใช้ $ ("your-pure-css-selector"). slice (0, index) แทน
ดังนั้นใช้$("selector").slice(from, to)
สำหรับการแสดงที่ดีขึ้น
ลองใช้: lt selector: http://docs.jquery.com/Selectors/lt#index
$('a:lt(20)');
.slice () ไม่ดีกว่าเสมอไป ในกรณีของฉันด้วย jQuery 1.7 ใน Chrome 36, .slice (0, 20) ล้มเหลวโดยมีข้อผิดพลาด:
RangeError: เกินขนาดสแต็กการโทรสูงสุด
ฉันพบว่า: lt (20) ทำงานโดยไม่มีข้อผิดพลาดในกรณีนี้ ฉันอาจมีองค์ประกอบเข้าคู่นับหมื่น
$("a:lt(n)")
:lt(20)
วิธีการทำความสะอาดมากมีลักษณะการใช้ชิ้นเป็นมากมีประสิทธิภาพมากขึ้นถ้าคุณมีชุดผลขนาดใหญ่จะเริ่มต้นด้วย น่าเสียดายที่เมื่อประเมิน ": lt" และตัวเลือกตำแหน่งอื่น ๆjQuery จะวนซ้ำทั้งชุดแม้ว่าจะเป็นเพียงองค์ประกอบแรกก็ตาม ฉันได้เขียนเพิ่มเติมเกี่ยวกับเรื่องนี้ในบล็อกของฉันที่นี่: spadgos.com/?p=51