2017-01-30 104 views
1

属性我有一个自定义属性的选择下拉菜单,看起来像这样:如何通过选择循环使用自定义jQuery的

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

,但我得到的错误,如:

Uncaught TypeError: Cannot read property 'each' of undefined

我怎么能遍历测试对每个custattr价值?

回答

1

你必须重复它像下面。

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

.attr()将返回string。因此它的原始链中不会有一个称为each的功能。

+0

感谢我认为这是答案的一部分,但是当我做出的改变现在我得到一个错误说'无法读取的未定义的属性“VAL” ' – Stephen

+1

@Stephen,只要使用'如果(myvalue的!= jQuery的(本).attr( 'custattr'))'不需要'.VAL()' – Satpal

+0

哦咄!谢谢!一旦他们让我接受答案。 – Stephen

0

如果你想获取属性ATTR“custattr”

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