มีหลายวิธีในการทำเช่นนี้ แต่วิธีการที่สะอาดที่สุดได้หายไปในบรรดาคำตอบยอดนิยมและข้อโต้แย้งval()มากมาย นอกจากนี้วิธีการบางอย่างเปลี่ยนไปเมื่อวันที่ jQuery 1.6 ดังนั้นจึงจำเป็นต้องมีการอัพเดท
สำหรับตัวอย่างต่อไปนี้ฉันจะถือว่าตัวแปร$selectเป็นวัตถุ jQuery ชี้ไปที่<select>แท็กที่ต้องการเช่นผ่านดังต่อไปนี้:
var $select = $('.selDiv .opts');
หมายเหตุ 1 - ใช้ val () สำหรับการจับคู่ค่า:
สำหรับการจับคู่ค่าการใช้val()นั้นง่ายกว่าการใช้ตัวเลือกคุณลักษณะ: https://jsfiddle.net/yz7tu49b/6/
$select.val("SEL2");
เวอร์ชัน setter ของ.val()ถูกนำไปใช้กับselectแท็กโดยการตั้งค่าselectedคุณสมบัติของการจับคู่optionด้วยเหมือนกันvalueดังนั้นจึงใช้ได้ดีกับเบราว์เซอร์สมัยใหม่ทั้งหมด
หมายเหตุ 2 - ใช้ prop ('ถูกเลือก', จริง):
หากคุณต้องการตั้งค่าสถานะที่เลือกไว้ของตัวเลือกโดยตรงคุณสามารถใช้prop(ไม่attr) กับbooleanพารามิเตอร์ (แทนที่จะเป็นค่าข้อความselected ):
เช่นhttps://jsfiddle.net/yz7tu49b/
$option.prop('selected', true); // Will add selected="selected" to the tag
หมายเหตุ 3 - อนุญาตสำหรับค่าที่ไม่รู้จัก:
หากคุณใช้val()เพื่อเลือก<option>แต่ไม่ตรงกับวาล (อาจเกิดขึ้นขึ้นอยู่กับแหล่งที่มาของค่า) จากนั้นเลือก "ไม่มีอะไร" และ$select.val()จะกลับมาnullจะกลับมา
ดังนั้นสำหรับตัวอย่างที่แสดงและเพื่อความทนทานคุณสามารถใช้สิ่งนี้https://jsfiddle.net/1250Ldqn/ :
var $select = $('.selDiv .opts');
$select.val("SEL2");
if ($select.val() == null) {
$select.val("DEFAULT");
}
หมายเหตุ 4 - การจับคู่ข้อความที่แน่นอน:
หากคุณต้องการจับคู่ด้วยข้อความที่แน่นอนคุณสามารถใช้filterฟังก์ชั่นด้วย เช่นhttps://jsfiddle.net/yz7tu49b/2/ :
var $select = $('.selDiv .opts');
$select.children().filter(function(){
return this.text == "Selection 2";
}).prop('selected', true);
แม้ว่าคุณจะมีพื้นที่ว่างเป็นพิเศษคุณอาจต้องการเพิ่มเล็มในการเช็คอิน
return $.trim(this.text) == "some value to match";
หมายเหตุ 5 - จับคู่ตามดัชนี
หากคุณต้องการจับคู่โดยดัชนีเพียงดัชนีเด็ก ๆ ของการเลือกเช่นhttps://jsfiddle.net/yz7tu49b/3/
var $select = $('.selDiv .opts');
var index = 2;
$select.children()[index].selected = true;
แม้ว่าฉันมักจะหลีกเลี่ยงคุณสมบัติ DOM โดยตรงในความโปรดปรานของ jQuery ทุกวันนี้ไปยังโค้ดที่มีการพิสูจน์ในอนาคตดังนั้นจึงสามารถทำได้เช่นกันที่https://jsfiddle.net/yz7tu49b/5/ :
var $select = $('.selDiv .opts');
var index = 2;
$select.children().eq(index).prop('selected', true);
หมายเหตุ 6 - ใช้การเปลี่ยนแปลง () เพื่อเริ่มการเลือกใหม่
ในทุกกรณีข้างต้นเหตุการณ์การเปลี่ยนแปลงจะไม่เริ่มทำงาน นี่คือการออกแบบโดยที่คุณจะไม่ต้องปิดท้ายด้วยกิจกรรมการเปลี่ยนแปลงซ้ำ
เพื่อสร้างเหตุการณ์การเปลี่ยนแปลงหากจำเป็นเพียงแค่เพิ่มการเรียกไป.change()ยังselectวัตถุjQuery เช่นตัวอย่างที่ง่ายที่สุดแรกจะกลายเป็นhttps://jsfiddle.net/yz7tu49b/7/
var $select = $('.selDiv .opts');
$select.val("SEL2").change();
นอกจากนี้ยังมีวิธีอื่นอีกมากมายในการค้นหาองค์ประกอบโดยใช้ตัวเลือกคุณลักษณะเช่น[value="SEL2"]แต่คุณต้องจำไว้ว่าตัวเลือกคุณลักษณะนั้นค่อนข้างช้าเมื่อเทียบกับตัวเลือกอื่น ๆ เหล่านี้
$("#my_select").val("the_new_value").change();... ... จากนี้