如何在jQuery中使用自定义属性循环选择

如何在jQuery中使用自定义属性循环选择,jquery,each,attr,Jquery,Each,Attr,我有一个带有自定义属性的select下拉列表,如下所示: <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</opt

我有一个带有自定义属性的select下拉列表,如下所示:

<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>
但我会遇到如下错误:

未捕获的TypeError:无法读取未定义的属性“each”


如何循环测试每个
custatr
值?

您必须像下面那样迭代它

jQuery('#myselect option').each(function(){
    if (myvalue != jQuery(this).attr('custattr')) {
    //do something
});

.attr()
将返回一个
字符串
。因此,它的原型链中不会有一个名为
each
的函数。

如果您想获取属性attr'custatr'

//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);
};

谢谢,我想这是答案的一部分,但是当我做这个更改时,我现在得到一个错误,说
无法读取未定义的
@Stephen的属性'val',只需使用
if(myvalue!=jQuery(this).attr('custattr'))
不需要
.val()
哦,糟了!谢谢他们一让我回答就接受了。@Satpal谢谢伙计。我发了这封信后就出去了。我没注意到。
//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);
};