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

감사 속성 ATTR를 얻을하려는 경우 그 답의 일부라고 생각하지만 난 그 변화를 할 때 지금은 정의되지 않은 재산 '발'을 읽을 수 없습니다 '라는 오류를 얻을 수 ' – Stephen

+1

@Stephen,'if (myvalue! = jQuery (this) .attr ('custattr'))''.val()'이 필요 없습니다. – Satpal

+0

오 이런! 감사! 그들이 나를 보내 자마자 대답으로 받아 들여. – 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); 
};