2017-01-30 4 views
1

ich ein dropdown mit benutzerdefinierten Attributen, die wie folgt aussieht:wie über ausgewählte Schleife mit benutzerdefinierten Attributen in 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> 

Und ich habe einen Wert oder die Werte, die ich gegen testen will, um zu sehen, ob sie sind nicht in der custattr jeder Option vorhanden.

Ich habe Variationen der folgende versucht:

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

aber ich bekomme Fehler wie:

Uncaught TypeError: Cannot read property 'each' of undefined

Wie kann ich Schleife durch gegen jeden custattr Wert zu testen?

Antwort

1

Sie müssen es wie folgt iterieren.

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

.attr() würde eine string zurückzukehren. Daher würde es in seiner Proto-Kette keine Funktion namens each haben.

+0

Dank bekommen denke ich, dass ein Teil der Antwort ist, aber wenn ich diesen Wandel herbeizuführen bekomme ich jetzt eine Fehlermeldung, 'kann nicht lesen Eigenschaft‚val‘undefinierter ' – Stephen

+1

@Stephen, benutze einfach' if (myvalue! = JQuery (this) .attr ('custattr')) 'keine Notwendigkeit für' .val() ' – Satpal

+0

oh duh! Vielen Dank! Akzeptiert als Antwort, sobald sie mich lassen. – Stephen

0

Wenn Sie Eigenschaft wollen 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); 
}; 
Verwandte Themen