ฉันผูกเหตุการณ์ในเหตุการณ์การเปลี่ยนแปลงขององค์ประกอบที่เลือกของฉันด้วยสิ่งนี้:
$('select').on('change', '', function (e) {
});
ฉันจะเข้าถึงองค์ประกอบที่เลือกไว้เมื่อเหตุการณ์การเปลี่ยนแปลงเกิดขึ้นได้อย่างไร
ฉันผูกเหตุการณ์ในเหตุการณ์การเปลี่ยนแปลงขององค์ประกอบที่เลือกของฉันด้วยสิ่งนี้:
$('select').on('change', '', function (e) {
});
ฉันจะเข้าถึงองค์ประกอบที่เลือกไว้เมื่อเหตุการณ์การเปลี่ยนแปลงเกิดขึ้นได้อย่างไร
คำตอบ:
$('select').on('change', function (e) {
var optionSelected = $("option:selected", this);
var valueSelected = this.value;
....
});
$("selector", this)
คุณกำลังค้นหาselector
องค์ประกอบทั้งหมดในthis
บริบทของ การเขียน $("selector", this)
เกือบจะเหมือนกัน $(this).find('selector')
$()
เป็นนามแฝงของjQuery()
คุณสามารถค้นหาเอกสารที่นี่: api.jquery.com/jQueryjQuery( selector [, context ] )
ลายเซ็นที่ระบุไว้มีอย่างเห็นได้ชัด @Bellash: ถ้ามัน "เกือบจะเหมือนกัน" ความแตกต่างคืออะไร? หรือเร็วกว่าอะไร ฉันชอบ.find()
เนื่องจากนี่คือ OO IMO ...
.find()
จะเร็วขึ้นประมาณ 10% ตามคำตอบนี้: stackoverflow.com/a/9046288/2767703
คุณสามารถใช้วิธีการค้นหา jQuery
$('select').change(function () {
var optionSelected = $(this).find("option:selected");
var valueSelected = optionSelected.val();
var textSelected = optionSelected.text();
});
วิธีการแก้ปัญหาข้างต้นทำงานได้อย่างสมบูรณ์ แต่ฉันเลือกที่จะเพิ่มรหัสต่อไปนี้สำหรับพวกเขายินดีที่จะได้รับตัวเลือกคลิก ช่วยให้คุณได้รับตัวเลือกที่เลือกแม้ว่าค่าที่เลือกนี้จะไม่เปลี่ยนแปลง (ทดสอบกับ Mozilla เท่านั้น)
$('select').find('option').click(function () {
var optionSelected = $(this);
var valueSelected = optionSelected.val();
var textSelected = optionSelected.text();
});
option
เหตุการณ์ถือเป็นข้อเสนอที่มีความเสี่ยงโดยเฉพาะอย่างยิ่งในอุปกรณ์พกพา ตัวอย่างเช่น Webkit ไม่สนับสนุนกิจกรรมนี้อย่างถูกต้อง: bugs.chromium.org/p/chromium/issues/detail?id=5284
ในกรณีที่ใครก็ตามใช้วิธีการมอบหมายสำหรับผู้ฟังให้ใช้e.target
(มันจะอ้างถึงองค์ประกอบที่เลือก)
$('#myform').on('change', 'select', function (e) {
var val = $(e.target).val();
var text = $(e.target).find("option:selected").text(); //only time the find is required
var name = $(e.target).attr('name');
}
ฉันพบว่าสั้นและสะอาดกว่านี้ นอกจากนี้คุณสามารถวนซ้ำรายการที่เลือกได้หากมีมากกว่าหนึ่งรายการ
$('select').on('change', function () {
var selectedValue = this.selectedOptions[0].value;
var selectedText = this.selectedOptions[0].text;
});
selectedOptions
ไม่สามารถใช้ได้ในทุกเบราว์เซอร์
this.options[ this.options.selectedIndex ]
ฉันสิ้นสุดกับ Mozilla แจ้งว่ารองรับ Firefox จาก 26, IE ไม่รองรับ
<select id="selectId">
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
</select>
$('#selectId').on('change', function () {
var selectVal = $("#selectId option:selected").val();
});
select option
ครั้งแรกสร้าง หลังจากนั้นjquery
คุณจะได้รับค่าที่เลือกในปัจจุบันเมื่อผู้ใช้เปลี่ยนselect option
ค่า
$('#_SelectID').change(function () {
var SelectedText = $('option:selected',this).text();
var SelectedValue = $('option:selected',this).val();
});
อีกวิธีหนึ่งและระยะสั้นในการรับค่าของค่าที่เลือก
$('#selectElement').on('change',function(){
var selectedVal = $(this).val();
^^^^ ^^^^ -> presents #selectElement selected value
|
v
presents #selectElement,
});
ดูเอกสาร API อย่างเป็นทางการ https://api.jquery.com/selected-selector/
ผลงานที่ดีนี้:
$( "select" ).on('change',function() {
var str = "";
// For multiple choice
$( "select option:selected" ).each(function() {
str += $( this ).val() + " ";
});
});
และ
$( "select" ).on('change',function() {
// For unique choice
var selVal = $( "select option:selected" ).val();
});
และเป็นเรื่องง่ายสำหรับตัวเลือกที่ไม่ซ้ำกัน
var SelVal = $( "#idSelect option:selected" ).val();
คุณสามารถใช้เหตุการณ์เปลี่ยนการเลือก jquery นี้เพื่อรับค่าตัวเลือกที่เลือก
$(document).ready(function () {
$('body').on('change','#select', function() {
$('#show_selected').val(this.value);
});
});
<!DOCTYPE html>
<html>
<title>Learn Jquery value Method</title>
<head>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
</head>
<body>
<select id="select">
<option value="">Select One</option>
<option value="PHP">PHP</option>
<option value="jAVA">JAVA</option>
<option value="Jquery">jQuery</option>
<option value="Python">Python</option>
<option value="Mysql">Mysql</option>
</select>
<br><br>
<input type="text" id="show_selected">
</body>
</html>