ใน jQuery เทียบเท่ากับdocument.getElementById("selectlist").value
อะไร
ฉันพยายามรับค่าของรายการที่เลือก
ขอบคุณ
ใน jQuery เทียบเท่ากับdocument.getElementById("selectlist").value
อะไร
ฉันพยายามรับค่าของรายการที่เลือก
ขอบคุณ
คำตอบ:
"เทียบเท่า" เป็นคำที่นี่
ขณะที่ ...
$('#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
ความโกลาหลเป็นจุดที่แม้ว่าสำหรับคำถามประเภทนี้คุณควรตรวจสอบเอกสาร Jqueryออนไลน์ - มันค่อนข้างครอบคลุม สถานที่ที่คุณอยู่นั้นเรียกว่า 'jquery selectors'
โดยทั่วไปแล้วคุณ$('#ID').val()
- หลังจากนั้นสามารถทำสิ่งต่าง ๆ ในองค์ประกอบที่ส่งคืนจากตัวเลือก คุณยังสามารถเลือกองค์ประกอบทั้งหมดในชั้นเรียนหนึ่งและทำบางสิ่งบางอย่างกับแต่ละองค์ประกอบ ตรวจสอบเอกสารประกอบสำหรับตัวอย่างที่ดี
สามารถทำได้สามวิธีที่แตกต่างกันแม้ว่าพวกเขาจะเกือบเหมือนกัน
วิธี Javascript
document.getElementById('test').value
วิธีการ jquery
$("#test").val()
$("#test")[0].value
$("#test").get(0).value
สำหรับผู้ที่สงสัยว่าตัวเลือก jQuery id ช้ากว่า document.getElementById คำตอบคือใช่ แต่ไม่ใช่เพราะสิ่งที่คิดว่ามันค้นหาทั่วทั้ง DOM กำลังมองหาองค์ประกอบ jQuery ใช้วิธีเนทีฟจริงๆ เป็นจริงเพราะ jQuery ใช้นิพจน์ปกติก่อนเพื่อแยกสตริงในตัวเลือกเพื่อตรวจสอบและแน่นอนว่าเรียกใช้ตัวสร้าง:
rquickExpr = /^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/
ในขณะที่การใช้องค์ประกอบ DOM เป็นอาร์กิวเมนต์จะส่งคืนทันทีด้วย 'this'
ดังนั้นนี่คือ:
$(document.getElementById('blah')).doSomething();
จะเร็วกว่านี้เสมอ:
$('#blah').doSomething();
ในบางกรณีฉันจำไม่ได้ว่าทำไม แต่$('#selectlist').val()
ไม่คืนค่ารายการที่ถูกต้องเสมอไปดังนั้นฉันจึงใช้$('#selectlist option:selected').val()
แทน