วิธีการทำเช่นนี้โดยใช้ jQuery - document.getElementById (“ selectlist”) ค่า


141

ใน jQuery เทียบเท่ากับdocument.getElementById("selectlist").valueอะไร

ฉันพยายามรับค่าของรายการที่เลือก

ขอบคุณ


10
คุณน่าจะได้รับการโหวตเพราะคำถามของคุณสามารถตอบได้ในไม่กี่วินาทีบน Google หรือโดยการอ่านเอกสาร JQuery
zombat

53
+1 ถึงต่อมทอนซิลสำหรับผู้ใช้ที่กล้าหาญของ SO คำถามของเขาเป็นคำถามที่ถูกต้องสมบูรณ์แบบไม่ว่าจะยากหรือยากแค่ไหนในการแก้ไข เพิ่มอัตราการเข้าชม SO เพื่อการค้นหาในอนาคตในหัวข้อนี้
นายสมิ ธ

7
c'mon guys - jQuery voodoo นั้นไม่ใช่เรื่องง่ายที่จะเรียนรู้สำหรับชายชราอย่างฉันเซิร์ฟเวอร์ dev ที่ฉันเคยผ่านมา 20 ปีหรือมากกว่านั้น - เป็นคนดีและง่ายต่อพวกเรา jQuery ผู้มาใหม่! :-)
marc_s

1
@Boekwurm Ben - เขาอาจจะกล้า แต่คุณไม่สามารถตำหนิผู้ใช้ SO เช่นกัน โดยทั่วไปคนมักจะเห็นความพยายามเล็กน้อยของคนที่ถามคำถาม
zombat

12
ตามที่ฉันจำได้นี่คือสิ่งแรกที่ฉันไม่ได้รับเกี่ยวกับ jQuery ฉันคิดว่ามันเป็นคำถามที่ถูกต้องหากมีการบอกความจริงและการทำเครื่องหมายลงอย่างรุนแรง stackoverflow.com/questions/75296/…
James Wiseman

คำตอบ:



214

"เทียบเท่า" เป็นคำที่นี่

ขณะที่ ...

$('#selectlist').val();

... เทียบเท่ากับ ...

document.getElementById("selectlist").value

... มันเป็นที่น่าสังเกตว่า ...

$('#selectlist')

... ถึงแม้ว่า 'เทียบเท่า' จะไม่เหมือนกับ ...

document.getElementById("selectlist")

... เนื่องจากที่ผ่านมาส่งคืนวัตถุ jQuery ไม่ใช่วัตถุ DOM

ในการรับวัตถุ DOM จาก jQuery ให้ใช้ดังต่อไปนี้:

$('#selectlist').get(); //get all DOM objects in the jQuery collection
$('#selectlist').get(0); //get the DOM object in the jQuery collection at index 0
$('#selectlist')[0]; //get the DOM objects in the jQuery collection at index 0

1
อาจจะเป็นวงเล็ก ๆ น้อย ๆ ที่นี่ แต่มันจะเป็นข้อมูลที่ดี: มีวิธีที่จะได้รับวัตถุ DOM จาก jQuery หรือไม่? แก้ไข : ตอบคำถามของฉันเองในการแก้ไข
Clayton Hughes

4
ฉันทุบหัวกับกำแพงเป็นเวลาหนึ่งชั่วโมงจนกระทั่งฉันรู้ว่า getElementById () ไม่สามารถแทนที่ด้วย $ () ขอบคุณมากสำหรับคำตอบนี้!
knite

3
@knite - ใช่ ฉันหวังว่าฉันจะมีคนอธิบายว่าฉันเป็นครั้งแรกที่ฉันใช้ jQuery
James Wiseman

1
ขอบคุณสำหรับคำอธิบายส่วนหลังของการรับวัตถุ DOM ใน jquery :)
kailash19

+1 Oldie แต่เป็นคนดี ฉันพยายามหาสาเหตุที่ Google แผนที่ยอมรับวัตถุ DOM แต่ไม่ยอมรับวัตถุ jQuery ของฉัน การค้นหา google อย่างรวดเร็วทำให้ฉันอยู่ที่นี่ไม่ใช่เอกสาร jQuery
TonyG

9

ความโกลาหลเป็นจุดที่แม้ว่าสำหรับคำถามประเภทนี้คุณควรตรวจสอบเอกสาร Jqueryออนไลน์ - มันค่อนข้างครอบคลุม สถานที่ที่คุณอยู่นั้นเรียกว่า 'jquery selectors'

โดยทั่วไปแล้วคุณ$('#ID').val()- หลังจากนั้นสามารถทำสิ่งต่าง ๆ ในองค์ประกอบที่ส่งคืนจากตัวเลือก คุณยังสามารถเลือกองค์ประกอบทั้งหมดในชั้นเรียนหนึ่งและทำบางสิ่งบางอย่างกับแต่ละองค์ประกอบ ตรวจสอบเอกสารประกอบสำหรับตัวอย่างที่ดี


9

สามารถทำได้สามวิธีที่แตกต่างกันแม้ว่าพวกเขาจะเกือบเหมือนกัน

วิธี Javascript

document.getElementById('test').value

วิธีการ jquery

$("#test").val()          

$("#test")[0].value             

$("#test").get(0).value

นี่คือคำตอบที่ดีที่สุด ขอบคุณ!
Carter Medlin

2

สำหรับผู้ที่สงสัยว่าตัวเลือก jQuery id ช้ากว่า document.getElementById คำตอบคือใช่ แต่ไม่ใช่เพราะสิ่งที่คิดว่ามันค้นหาทั่วทั้ง DOM กำลังมองหาองค์ประกอบ jQuery ใช้วิธีเนทีฟจริงๆ เป็นจริงเพราะ jQuery ใช้นิพจน์ปกติก่อนเพื่อแยกสตริงในตัวเลือกเพื่อตรวจสอบและแน่นอนว่าเรียกใช้ตัวสร้าง:

rquickExpr = /^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/

ในขณะที่การใช้องค์ประกอบ DOM เป็นอาร์กิวเมนต์จะส่งคืนทันทีด้วย 'this'

ดังนั้นนี่คือ:

$(document.getElementById('blah')).doSomething();

จะเร็วกว่านี้เสมอ:

$('#blah').doSomething();

0

ในบางกรณีฉันจำไม่ได้ว่าทำไม แต่$('#selectlist').val()ไม่คืนค่ารายการที่ถูกต้องเสมอไปดังนั้นฉันจึงใช้$('#selectlist option:selected').val()แทน


บางทีคุณอาจโพสต์ลิงก์บางลิงก์กลับเพื่อยืนยันสิ่งนี้ อย่างไรก็ตามฉันจะประหลาดใจ นี่จะเป็นข้อบกพร่องพื้นฐานใน jQuery เป็นไปได้หรือไม่ที่คุณกำลังใช้ไลบรารีรุ่น buggy?
James Wiseman

น่าจะเป็น James ฉันคิดว่ามันน่าจะเป็น 1.3.0 ดูเหมือนจะไม่สามารถทำซ้ำได้ใน 1.3.2 แต่มันน่าจะเป็น IE6 หรือ 7 ซึ่งฉันไม่ได้ติดตั้งอีกต่อไปฉันจะเห็น ถ้าฉันสามารถหาสาเหตุดั้งเดิมและรายงานได้ที่นี่
Brett Ryan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.