2017-03-02 2 views
0

ich versuche einen Attributwert für eine Option zu erhalten, wenn mit dem folgenden Code:

$('#select3,#select5,#select7,#select9,#select11') 
    .children('option[value="'+ selectedDValue +'"]', this) 
    .attr({'disabled': true,'data-subtext':$(this).attr("data-subtext") + ' 
    (postcode area saved in another zone)'}); 

jedoch $(this).attr("data-subtext") ‚Nicht definiert‘ zurückkehrt, damit das Attribut zu sein gedruckt als data-subtext="Undefined (postcode area saved in another zone)". Die Option hat ein Attribut namens data-subtext, also frage ich mich, warum nichts zurückgegeben wird?

+0

eine Geige Link erstellen, so dass wir das genaue Problem wissen, kommen kann. oder probiere so: -' $ ('# select3, # select5, # select7, # select9, # select11') children ('option [wert =' '+ selectedDValue +' "] '). je (funktion() { \t $ (this) .attr ({'deaktiviert': true, 'Daten-Subtext': $ (this) .attr ("Daten-Subtext") + '(PLZ-Bereich in einer anderen Zone gespeichert)'}); }); ' –

+0

leider immer noch zurück undefined @Anant, aber danke für den Versuch –

Antwort

1

Gemäß dem aktuellen Code this bezieht sich auf window Objekt nicht option daher seine Rückkehr undefined.

Sie benötigen .attr(attributeName, fn) und entfernen von .children() Methode.

$(selector).children('option[value="' + selectedDValue + '"]').attr('data-subtext', function(index, value) { 
 
    return value + ' (postcode area saved in another zone)' 
 
});

+0

perfekt danke Satpal und sehr nützliche Erklärung. Upvoted sobald 5 Minuten sind! –