在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> 

你需要findselect的选项:

 $(this).find(':selected').data('id') 

要么

 $(this).find(':selected').attr('data-id') 

尽pipe第一种方法是优选的。

尝试以下操作:

 $('select').change(function(){ alert($(this).children('option:selected').data('id')); }); 

您的更改订阅者订阅select的更改事件,所以this参数是select元素。 您需要find所选的孩子以从中获取数据ID。

香草使用Javascript:

 this.querySelector(':checked').getAttribute('data-id') 
 document.querySelector('select').onchange = function(){ alert(this.selectedOptions[0].getAttribute('data-attr')); };