Javascript .val()获取匹配元素集中所有元素的当前值的替代项

Javascript .val()获取匹配元素集中所有元素的当前值的替代项,javascript,jquery,events,event-delegation,Javascript,Jquery,Events,Event Delegation,我有3个select元素,我使用$(“.select elem select”).val()获取数组中每个select元素的值,但它只返回匹配元素集中第一个元素的值。例如,如果用户为第一个选择元素选择“2”,为第二个选择元素选择“3”,为第三个选择元素选择“4”,则val()函数将返回2,而不是[2,3,4]。是否有一个函数可以返回包含所有三个select元素的值的数组 <td class="select-elem"> <select> <option value=

我有3个select元素,我使用
$(“.select elem select”).val()
获取数组中每个select元素的值,但它只返回匹配元素集中第一个元素的值。例如,如果用户为第一个选择元素选择“2”,为第二个选择元素选择“3”,为第三个选择元素选择“4”,则val()函数将返回
2
,而不是
[2,3,4]
。是否有一个函数可以返回包含所有三个select元素的值的数组

<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>

1.
2.
3.
4.
5.
6.
7.
8.
9
0
1.
2.
3.
4.
5.
6.
7.
8.
9
0
1.
2.
3.
4.
5.
6.
7.
8.
9

为此使用映射方法:

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

为此使用映射方法:

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

创建自己的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()

创建自己的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()

这是比公认的答案更好的答案。当有像
map
这样的方法可以为您实现这一点时,不需要扩展jQuery。这是一个比公认答案更好的答案。当有像
map
这样的方法可以为您扩展jQuery时,不需要扩展它