我有一个带有自定义属性的选择下拉列表,如下所示:
<select id="myselect">
<option value="1" custattr="first">First One</option>
<option value="2" custattr="second">Second One</option>
<option value="3" custattr="third">Third One</option>
</select>
我有一个或多个我要测试的值,看看它们是否不在每个选项的custattr
中。
我尝试过以下各种变体:
jQuery('#myselect option').attr('custattr').each(function(){
if (myvalue != jQuery(this).attr('custattr').val()) {
//do something
}
});
但我收到的错误如下:
未捕获的TypeError:无法读取属性&#39;每个&#39;未定义的
如何循环测试每个custattr
值?
答案 0 :(得分:1)
你必须像下面那样迭代它。
jQuery('#myselect option').each(function(){
if (myvalue != jQuery(this).attr('custattr')) {
//do something
});
.attr()
会返回string
。因此,它的原型链中不会有一个名为each
的函数。
答案 1 :(得分:0)
如果你想获得属性attr&#39; custattr&#39;
//jquery
$(document).on('change','select',function(){
var attr= $(this).find('option:selected').attr('data-custattr');
alert(attr)
});
// JS
document.querySelector('select').onchange = function(){
var attr= this.selectedOptions[0].getAttribute('data-custattr');
alert(attr);
};