2011-05-11 106 views
14
<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> 

和這個jsjQuery的選擇變化

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

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

我有警報NULL ... 爲什麼?

+0

[Works for me](http://jsfiddle.net/trxZK/)。 – lonesomeday

+0

http://jsfiddle.net/wzzMm/在Chrome中適用! – rsplak

+0

您還沒有關閉最後一次輸入的選項標籤。是代碼中的拼寫錯誤還是錯誤? – Ammu

回答

10

你的代碼很好。這裏有一個演示:http://jsfiddle.net/hKktc/1/

你沒有得到第二警報調用的值的原因是因爲該屬性prefix不存在的select和只存在了option

+0

TRY WITH JQUERY 1.5.2 ....... BUG? – Ste

+1

這是一個很奇怪的問題。問題不在於代碼,而在於屬性名稱。如果你將它改爲'prefix1',它可以工作:http://jsfiddle.net/hKktc/7/我不知道它是一個bug還是別的什麼 – JohnP

+0

'prefix'可能是一個關鍵字! :) –

4

在您的代碼中,$(this)指的是<select>,而不是選項。 prefix屬性不存在<select>

這將導致第二個示例的問題。

4

第二屆alert將返回null,因爲<select>沒有任何屬性prefix

1

你是什麼期待的?

我發現第二個提示 - alert($(this).attr('prefix'));是造成問題的那個。 正如您所看到的那樣,您會收到前綴號碼的警報,然後收到空值警報(由第二個警報引起)。

+0

繼上面的@JohnP提示後 - 如果將atrtibute'前綴'改爲別的東西,它確實可以很好地工作。我認爲'前綴'是保留的。 此外,這是一個更漂亮 - '$(document).ready(function(){('#Nazione')。change(function(){0121} {'option:selected',this ).attr('prefix1')); }); });' 該代碼由@SLaks in [this thread](http://stackoverflow.com/questions/2230704/jquery-getting-custom-屬性從選擇的選項)。 – phil

0

您可能想要.val()而不是.attr('prefix'),以獲得選定的值<select>

​​