Изменение выбора JQuery

<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>

и это js

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

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

У меня есть предупреждение NULL... ЗАЧЕМ?

Ответы

Ответ 1

Ваш код в порядке. Вот демо: http://jsfiddle.net/hKktc/1/

Причина, по которой вы не получаете значение для второго вызова оповещения, состоит в том, что атрибут prefix не существует для select и существует только для option

Ответ 2

В вашем коде $(this) ссылается на <select>, а не на параметр. Атрибут prefix не существует на <select>

Это вызовет проблему со вторым примером.

Ответ 3

Второй alert возвращает null, потому что <select> не имеет атрибута prefix.

Ответ 4

Чего именно вы ожидаете?

Я обнаружил, что второе предупреждение - alert( $(this).attr('prefix') ); является тем, что вызывает проблему. Как есть, вы получаете предупреждение о номере префикса, затем предупреждение о нуле (вызванное вторым предупреждением).

Ответ 5

Вероятно, вам понадобилось .val() not .attr('prefix'), чтобы получить выбранное значение <select>.

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

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