2014-09-30 58 views
1

我有3個select元素,我使用$(".select-elem select").val()來獲取數組中每個select元素的值,但它返回值只有匹配元素集中的第一個元素。例如,如果用戶爲第一個選擇元素選擇「2」,爲第二個選擇「3」,爲第三個選擇「4」,則val()函數將返回2而不是[2,3,4]。有沒有一個函數可以返回一個包含所有三個select元素值的數組?.val()替代方案獲取匹配元素集合中所有元素的當前值

<td class="select-elem"> 
<select> 
<option value="1">1</option> 
<option value="2">2</option> 
<option value="3">3</option> 
<option value="4">4</option> 
<option value="5">5</option> 
<option value="6">6</option> 
<option value="7">7</option> 
<option value="8">8</option> 
<option value="9">9</option> 
</select> 
</td> 
<td class="select-elem"> 
<select> 
<option value="0">0</option> 
<option value="1">1</option> 
<option value="2">2</option> 
<option value="3">3</option> 
<option value="4">4</option> 
<option value="5">5</option> 
<option value="6">6</option> 
<option value="7">7</option> 
<option value="8">8</option> 
<option value="9">9</option> 
</select> 
</td> 
<td class="select-elem"> 
<select> 
<option value="0">0</option> 
<option value="1">1</option> 
<option value="2">2</option> 
<option value="3">3</option> 
<option value="4">4</option> 
<option value="5">5</option> 
<option value="6">6</option> 
<option value="7">7</option> 
<option value="8">8</option> 
<option value="9">9</option> 
</select> 
</td> 

回答

3

此使用地圖的方法:

var values = $(".select-elem select").map(function() { 
    return $(this).val(); 
}).get(); 
+0

這比接受更好的答案回答。當有像'map'這樣的方法爲你做這件事時,不需要擴展jQuery – jasonscript 2014-09-30 06:53:18

2

創建您自己的jQuery的方法,並用它你需要的地方,找到下面的代碼

//create jquery method arrVal which returns array of values 
$.fn.arrVal = function() { 
    var valArr = []; 
    $(this).each(function(){ 
    valArr.push($(this).val()) 
    }) 
    return valArr; 
} 

//call arrVal method 
$('select').arrVal()