web-dev-qa-db-ja.com

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です...なぜですか?

14
Ste

あなたのコードは大丈夫です。これがデモです: http://jsfiddle.net/hKktc/1/

2番目のアラート呼び出しの値が取得されない理由は、属性prefixselectに存在せず、optionにのみ存在するためです。

10
JohnP

コードでは、$(this)はオプションではなく<select>を参照します。 prefix属性は<select>に存在しません

これにより、2番目の例で問題が発生します。

4
James Wiseman

2番目のalertはnullを返します。これは、<select>には属性prefixがありません。

4
DanielB

あなたは正確に何を期待していますか?

2番目のアラート--alert( $(this).attr('prefix') );が問題の原因であることがわかりました。現状では、プレフィックス番号のアラートが表示され、次にnullのアラートが表示されます(2番目のアラートが原因)。

1
phil

_<select>_の選択された値を取得するには、.val()ではなく.attr('prefix')が必要な場合があります。

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

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