2010-10-13 79 views
26

我有下拉<select>與編號my_dropdown。我允許多選。我知道如何拉使用jQuery選擇值(S):jquery獲取所有下拉值

var values = $('#my_dropdown').val(); 

,如果我選擇了多個這將返回值的數組。無論選擇什麼內容,我還需要獲取下拉列表中的所有值。我如何使用jquery類似地獲取所有在給定的id下拉列表中的值?

+0

在http://stackoverflow.com/questions/590163/how-to-get-all找到更好的解決辦法-options-of-a-select-using-jquery – 2016-03-10 12:48:45

回答

30

如何像:

var values = []; 
$('#my_dropdown option').each(function() { 
    values.push($(this).attr('value')); 
}); 
5

的樣子:

var values = $('#my_dropdown').children('option').map(function(i, e){ 
    return e.value || e.innerText; 
}).get(); 

在操作中查看:http://www.jsfiddle.net/YjC6y/16/

參考:.map()

+1

return e.value; (如果你想要的值而不是顯示文本)否則,這是一個很好的解決方案! +1 – 2010-10-13 13:10:17

+0

我總是忘記'map'函數+1 – 2010-10-13 13:27:49

4

例子:http://jsfiddle.net/FadHu/

var opts = $('#my_dropdown')[0].options; 

var array = $.map(opts, function(elem) { 
    return (elem.value || elem.text); 
}); 

<select>元件具有在其options屬性選項列表。然後use $.map()返回一個數組,以獲得選項的valuetext屬性。

(注意$.map()表現有點不同於$(element).map()。可有點棘手。)

+1

如果沒有任何值,我喜歡回退到文本:p – 2010-10-13 13:15:29

+0

@John - 是的,對於IE6是必需的,或者由於某種原因'value'是一個空字符串。否則,如果不存在'value'屬性,大多數瀏覽器會給你'text'。 – user113716 2010-10-13 13:21:34