下面的代码返回'undefined'…
$('select').change(function(){
alert($(this).data('id'));
});
<select>
<option data-id="1">one</option>
<option data-id="2">two</option>
<option data-id="3">three</option>
</select>
下面的代码返回'undefined'…
$('select').change(function(){
alert($(this).data('id'));
});
<select>
<option data-id="1">one</option>
<option data-id="2">two</option>
<option data-id="3">three</option>
</select>
当前回答
通过使用这个,您可以获得文本,值和数据属性。
<select name="your_name" id="your_id" onchange="getSelectedDataAttribute(this)">
<option value="1" data-id="123">One</option>
<option value="2" data-id="234">Two</option>
</select>
function getSelectedDataAttribute(event) {
var selected_text = event.options[event.selectedIndex].innerHTML;
var selected_value = event.value;
var data-id = event.options[event.selectedIndex].dataset.id);
}
其他回答
通过使用这个,您可以获得文本,值和数据属性。
<select name="your_name" id="your_id" onchange="getSelectedDataAttribute(this)">
<option value="1" data-id="123">One</option>
<option value="2" data-id="234">Two</option>
</select>
function getSelectedDataAttribute(event) {
var selected_text = event.options[event.selectedIndex].innerHTML;
var selected_value = event.value;
var data-id = event.options[event.selectedIndex].dataset.id);
}
您需要找到所选的选项:
$(this).find(':selected').data('id')
or
$(this).find(':selected').attr('data-id')
尽管第一种方法更可取。
试试下面的方法:
$('select').change(function(){
alert($(this).children('option:selected').data('id'));
});
您的更改订阅者订阅了选择的更改事件,因此this参数是选择元素。您需要找到要从中获取数据id的选定子节点。
$('#foo option:selected').data('id');
alert($(this).first().data('id'));