2013-04-28 25 views
0

我在我的網站上有兩個select標籤。當我嘗試在一個select標記中獲取選定項目的文本時,我發現它會返回兩個select標記的兩個文本,即使我指定通過類屬性從哪個select中檢索數據。jquery返回選擇標籤中的選定項目的文本加上其他選擇標籤中選定項目的文本

我的代碼是

$('select.select').change(function(e) { 

e.preventDefault(); 
var val1 = $(' option:selected').text(); 
alert(val1); 


}); 

$('select.select2').change(function(e) { 

e.preventDefault(); 

var val2 = $(' option:selected').text(); 
alert(val2); 


}); 

警報總是包含級聯兩個select標籤的文本。

您的常見幫助表示讚賞。

+1

的變量的名稱你選擇化妝我想知道你真正渴望的是選擇的價值而不是選擇的選項的文本。有時它們是相同的,但前者使得代碼更加便攜。例如在你的更改回調中,它會是:'$(this).val()' – gillyspy 2013-04-28 18:01:47

+0

我完全同意你的觀點,當我將它改爲var val1 = $('option:selected',this).text();它現在正在基於Simon Adcock的回答工作,現在正在工作。 – 2013-04-28 18:03:09

回答

1

也許更新選擇指定選擇的範圍:

$('select.select').change(function(e) { 

    e.preventDefault(); 
    var val1 = $('option:selected', this).text(); 
    alert(val1); 

    return false; 

    }); 

$('option:selected', this)將返回改變元素的上下文中發現價值的選擇。

+0

感謝您的快速反饋。我會測試它並回來給出一個反饋。 – 2013-04-28 17:58:06

+0

完美。非常感謝,我希望我能有一天能夠爲社區提供如此高效和快速的幫助。 – 2013-04-28 17:59:32

+0

我可以在9分鐘內接受,我會回來這裏做。 – 2013-04-28 17:59:53

1

這是因爲這$('option:selected').text();你有兩個選定的選項在你的頁面,所以它返回兩個值。

+0

你說得對。我用了答案,它正在工作。 – 2013-04-28 18:00:14

1

你需要這樣做:

// Call the change event for the select 
$('select.select').change(function (e) { 

    e.preventDefault(); 

    // Get the selected option for the select in current scope 
    var text = $(this).find('option:selected').text(); 
    alert(text); 

    //return false; No need of this, as we already called the preventDefault() method 
}); 
+0

是的,我完全同意你的觀點,當我在Simon Adcock的基礎上添加'this'時,回答它正在工作。我會根據你的建議去除返回錯誤,謝謝你的時間。 – 2013-04-28 18:04:47

+1

此外,一個建議,你可以使用相同的類'選擇'兩個選擇下拉和上述代碼將適用於兩者。無需用相同的邏輯編寫兩個更改事件。 – 2013-04-28 18:06:30

+0

我同意你,但在我的情況下,我需要更多的工作,因爲我已經根據班級的差異放置了不同的CSS。非常感謝 – 2013-04-28 18:09:48

1

你需要指定類,當你檢索值:

var val1 = $('.select option:selected').text(); 

var val2 = $('.select2 option:selected').text(); 
+0

我明白你的意思,但我已經這樣做了,我只是忘了在我的帖子中提到它,我會編輯 – 2013-04-28 18:12:03

+1

http://jsfiddle.net/mTW88/ – qwerty 2013-04-28 18:14:21

+0

你是完全正確的 – 2013-04-28 18:19:08

相關問題