2013-03-20 80 views
-2

我面臨一個非常奇怪的問題,其中jQuery:selected總是返回相同的值。jQuery:選擇不工作,總是返回相同的值

對於例如,可以說我有這樣的HTML:

<select class="some_select"> 
    <option value="0">Zero</option> 
    <option value="1">One</option> 
</select> 

然後我運行$這個jQuery代碼(文件)。就緒():

$('.some_select').change(function() { 
     alert($(this).attr('value')); 
    }); 

在上述情況下,該警報始終顯示所選選項的良好值,但如果我運行此操作:

var type = $('.some_select :selected').attr('value'); 

使用此代碼,警報總是無論選擇什麼選項,都將返回「0」。

我也試過:

$('.some_select').find(':selected') 

$('.some_select').filter(':selected') 

$('.some_select option:selected') 

在此先感謝您的幫助!

+0

心不是的選擇總是會一樣的選擇值的價值? – 2013-03-20 01:03:21

+2

似乎工作正常http://jsfiddle.net/ExplosionPIlls/3d6EF/ – 2013-03-20 01:03:40

回答

0

select元素沒有一個value屬性,因此提醒$(this).attr('value')會提醒undefined,而不是選擇選項的「物有所值」,如你要求。

這裏您不需要使用:selected僞類。只需使用選擇的.val()方法來檢索它的當前值:

$('.some_select').change(function() { 
    alert($(this).val()); 
}); 

這裏是一個演示:http://jsfiddle.net/qGuxt/

0

這是因爲您需要.change(function(){..}),因此它可以在更改值時進行更新,當更改值時,其他代碼片段不會更新。或者我誤解了一些東西?

+0

第二個片段實際上用於我的代碼中的其他位置來獲取select的值,而不使用「更改」,並且它始終返回相同的值。 – SlashJ 2013-03-20 01:06:24

+0

這就是我所說的,如果你想改變它,你需要「改變」。 – dezman 2013-03-20 01:08:28

1

我要去tldr爆炸丸評論。你正在尋找的代碼是

$('.some_select').change(function() { 
    console.log($(":selected").attr('value')); 
});