มีหลายวิธีในการทำเช่นนี้ แต่วิธีการที่สะอาดที่สุดได้หายไปในบรรดาคำตอบยอดนิยมและข้อโต้แย้ง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();
... ... จากนี้