วิธีรับ $ (this) ตัวเลือกที่เลือกใน jQuery?


92

รหัสต่อไปนี้ใช้งานได้:

$("#select-id").change(function(){
  var cur_value = $('#select-id option:selected').text();
  . . .
});

วิธี refactor บรรทัดที่สองเป็น:

var cur_value = $(this).***option-selected***.text();

คุณใช้ทำอะไร***option-selected***?

คำตอบ:


122

สำหรับค่าที่เลือก: $(this).val()

หากคุณต้องการองค์ประกอบตัวเลือกที่เลือก $("option:selected", this)


106
 $(this).find('option:selected').text();

สิ่งนี้ใช้ได้ผลอย่างสมบูรณ์สำหรับฉัน - ฉันพยายาม$("option:selected", this)ตามที่กล่าวไว้ข้างต้น แต่นั่นเป็นปัญหา ฉันใช้การคลิกปุ่มเพื่อต่อท้ายข้อความองค์ประกอบตัวเลือกที่เลือกไปยัง div อื่น แต่เมื่อฉันคลิกปุ่มมันเปลี่ยนองค์ประกอบที่เลือกจริงๆ ... แปลก ใช้อันนี้.
skwidbreth

53

วิธีที่ดีที่สุดและสั้นที่สุดในความคิดของฉันสำหรับกิจกรรม onchange ในเมนูแบบเลื่อนลงเพื่อรับตัวเลือกที่เลือก:

$('option:selected',this);

เพื่อรับแอตทริบิวต์ค่า:

$('option:selected',this).attr('value');

เพื่อรับส่วนที่แสดงระหว่างแท็ก:

$('option:selected',this).text();

ในตัวอย่างของคุณ:

$("#select-id").change(function(){
  var cur_value = $('option:selected',this).text();
});

ไม่ใช้.contextมันเลิกใช้แล้วตั้งแต่ jQuery 1.10 - api.jquery.com/category/deprecated/deprecated-1.10
rafx

ใช่ แต่สิ่งที่คุณหมายถึงคือ api.jquery.com/context $ ("ul", document.body) .context.nodeName ที่ฉันไม่ได้ใช้
angelmedia

1
ฉันชอบคำตอบ แต่ทำไมถึงดีที่สุด?
Sébastien Gicquel



9

คุณสามารถใช้findเพื่อค้นหาตัวเลือกที่เลือกซึ่งเป็นลูกหลานของโหนดที่ชี้โดยวัตถุ jQuery ปัจจุบัน:

var cur_value = $(this).find('option:selected').text();

เนื่องจากสิ่งนี้น่าจะเป็นลูกในทันทีฉันขอแนะนำให้ใช้.childrenแทน:

var cur_value = $(this).children('option:selected').text();

7
var cur_value = $(this).find('option:selected').text();

เนื่องจากoptionมีแนวโน้มที่จะเป็นลูกของselectคุณทันทียังสามารถใช้:

var cur_value = $(this).children('option:selected').text();

http://api.jquery.com/find/


คุณจะได้รับoption-selectedโดยไม่มีคำพูด ... ?
Platinum Azure

นั่นเป็นการพิมพ์ผิดเมื่อฉันโพสต์ แก้ไขคำตอบแล้ว
ธ ม

find('option:selected')ส่งคืนสตริงว่างให้ฉัน จำเป็นต้องใช้ jQuery เวอร์ชันใด ฉันกำลังทำงานใน 1.6.1 children('option:selected')ทำงาน
B Seven

option:selectedมีมาตั้งแต่ v1.0 api.jquery.com/selected-selector
thomthom

0

เดาได้ดีที่สุด:

var cur_value = $('#select-id').children('option:selected').text();

ฉันชอบเด็ก ๆ มากกว่าในกรณีนี้เพราะคุณรู้ว่าคุณกำลังแยกกิ่งไม้ลงต้นไม้ DOM ...


บางทีสิ่งที่คุณหมายถึงคือ var cur_value = $ (this) .children ('option: selected'). text ();
Joe Johnston

0

มันเป็นเพียง

$(this).val();

ฉันคิดว่า jQuery ฉลาดพอที่จะรู้ว่าคุณต้องการอะไร

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.