2017-01-30 15 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

Спасибо Я думаю, что это часть ответа, но когда я делаю это изменение теперь я получаю сообщение об ошибке сказав 'Не удается прочитать свойство«Вэл»неопределенных ' – Stephen

+1

@Stephen, Просто используйте' if (myvalue! = JQuery (this) .attr ('custattr')) 'no need for' .val() ' – Satpal

+0

oh duh! Благодаря! Принимается как ответ, как только они позволяют мне. – Stephen

0

Если вы хотите получить свойство Аттрибут «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); 
};