下面的代碼返回 '未定義' ......在選擇的變化,得到的數據屬性值
$('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').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').change(function(){
alert($(this).children('option:selected').data('id'));
});
你改變用戶簽約的選擇的變化情況,因此this
參數是選擇元素。您需要找到所選的孩子以從中獲取數據ID。
這個作品。 – ofko
從2016年開始,find()比'children()'快得多,即使在像這樣的情況下,我們只有樹深度爲2. – Hafenkranich
香草的Javascript:
this.querySelector(':checked').getAttribute('data-id')
Working for Me。 –
document.querySelector('select').onchange = function(){
alert(this.selectedOptions[0].getAttribute('data-attr'));
};
這對我的作品
<select class="form-control" id="foo">
<option value="first" data-id="1">first</option>
<option value="second" data-id="2">second</option>
</select>
和腳本
$('#foo').on("change",function(){
var dataid = $("#foo option:selected").attr('data-id');
alert(dataid)
});
$('#foo option:selected').data('id');
試試這個:
$('select').change(function(){
alert($(this).val());
});
<select>
<option value="1">one</option>
<option value="2">two</option>
<option value="3">three</option>
</select>
使用$(this).find(':selected')或$(this).children('option:selected')是更好嗎? – ofko
看到這個問題:http://stackoverflow.com/questions/648004/what-is-fastest-children-or-find-in-jquery –