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

时间:2017-01-30 14:11:18

标签: jquery each attr

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

<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值?

2 个答案:

答案 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);
};