it-swarm.com.de

Jquery select change

<select id="Nazione" name="Nazione">
    <option prefix='+93' value='AF' >Afghanistan </option>
    <option prefix='+355' value='AL' >Albania </option>
    <option prefix='+213' value='DZ' >Algeria </option>
    <option prefix='+376' value='AD' >Andorra .... etc
</select>

und das js

$(document).ready(function() {  
    $('#Nazione').change(function(){

        alert( $(this).find("option:selected").attr('prefix') );
        alert( $(this).attr('prefix') );
    });
  });

Ich habe Alarm NULL ... WARUM?

14
Ste

Ihr Code ist in Ordnung. Hier ist eine Demo: http://jsfiddle.net/hKktc/1/

Der Grund, warum Sie keinen Wert für den zweiten Alertaufruf erhalten, ist, dass das Attribut prefix nicht für die select und nur für die option existiert.

10
JohnP

In Ihrem Code bezieht sich $(this) auf den <select>, nicht auf die Option. Das prefix-Attribut ist im <select> nicht vorhanden. 

Das wird das Problem mit dem zweiten Beispiel verursachen.

4
James Wiseman

Die 2. Variable alert gibt null zurück, da <select> kein Attribut prefix hat.

4
DanielB

Was erwarten Sie genau? 

Ich finde, dass der zweite Alarm - alert( $(this).attr('prefix') ); - derjenige ist, der ein Problem verursacht. Im Normalfall erhalten Sie eine Warnung über die Präfixnummer und dann eine Warnung von Null (verursacht durch die zweite Warnung).

1
phil

Sie wollten wahrscheinlich .val() nicht .attr('prefix'), um den ausgewählten Wert von <select> zu erhalten.

$(document).ready(function() {  
    $('#Nazione').change(function(){

        alert( $(this).find("option:selected").attr('prefix') );
        alert( $(this).val('prefix') );
    });
  });
0
vitas