ฉันยังใหม่กับ jQuery ขออภัยหากนี่เป็นคำถามโง่ ๆ
เมื่อฉันใช้มันค้นหาองค์ประกอบโดยใช้รหัสฉันรู้ว่ามีหนึ่งรายการที่ตรงกันเสมอและในการเข้าถึงฉันจะใช้ดัชนี [0] มีวิธีที่ดีกว่านี้หรือไม่? สำหรับเช่น
var gridHeader = $("#grid_GridHeader")[0];
ฉันยังใหม่กับ jQuery ขออภัยหากนี่เป็นคำถามโง่ ๆ
เมื่อฉันใช้มันค้นหาองค์ประกอบโดยใช้รหัสฉันรู้ว่ามีหนึ่งรายการที่ตรงกันเสมอและในการเข้าถึงฉันจะใช้ดัชนี [0] มีวิธีที่ดีกว่านี้หรือไม่? สำหรับเช่น
var gridHeader = $("#grid_GridHeader")[0];
คำตอบ:
คุณสามารถใช้.get(0)
เช่นกัน แต่ ... คุณไม่ควรต้องทำที่มีองค์ประกอบที่พบโดยใช้ ID ที่ควรเสมอจะไม่ซ้ำกัน ฉันหวังว่านี่เป็นเพียงการกำกับดูแลในตัวอย่าง ... หากเป็นกรณีนี้ในเพจจริงของคุณคุณจะต้องแก้ไขเพื่อให้ ID ของคุณไม่ซ้ำกันและใช้คลาส (หรือแอตทริบิวต์อื่น) แทน
.get()
(เช่น[0]
) รับองค์ประกอบ DOM หากคุณต้องการใช้วัตถุ jQuery .eq(0)
หรือ.first()
แทน :)
document.getElementById('id')
อย่าสร้างวัตถุ jQuery เพียงเพื่อทิ้งมันไป ... ซึ่งเป็นการสิ้นเปลืองอย่างมากตั้งแต่เครื่องยนต์ตัวเลือกไปจนถึงเครื่องห่อวัตถุมันเป็นเพียงการใช้งานมากเกินไปโดยไม่มีเหตุผลที่ดี :)
document.getElementById('id')
ด้วย$('#id')[0]
แต่ไม่ชอบไฟล์[0]
. ความคิดเห็นของคุณเกี่ยวกับความสิ้นเปลืองทำให้ฉันคิดที่จะกำหนด$0 = function(id){return document.getElementById(id);}
และตอนนี้ฉันชอบ$0('id')
ดีกว่า จำนวนตัวอักษรเท่า$('#id')
กันฉันแค่หวังว่ามันจะเป็น$#('id')
$("#grid_GridHeader:first")
ทำงานได้ดี
คุณสามารถใช้วิธีแรก:
$('li').first()
btw ฉันเห็นด้วยกับ Nick Craver - ใช้ document.getElementById () ...
[]
จะtrue
ประเมิน
ด้วยสมมติฐานว่ามีองค์ประกอบเดียว:
$("#grid_GridHeader")[0]
$("#grid_GridHeader").get(0)
$("#grid_GridHeader").get()
... มีค่าเท่ากันทั้งหมดโดยส่งคืนองค์ประกอบพื้นฐานเดียว
จากซอร์สโค้ด jQuery คุณจะเห็นว่าget(0)
ภายใต้ฝาครอบนั้นทำสิ่งเดียวกันกับ[0]
วิธีการ:
// Return just the object
( num < 0 ? this.slice(num)[ 0 ] : this[ num ] );
$("#grid_GridHeader").eq(0)
คุณสามารถลองทำดังนี้
yourArray.shift()
$("#id") /* jQuery object */ != $("#id").get(0) /* DOM Object */