我有多个Select下拉元素,只有一个类.select
<select class='select' name='select1' id='select1'>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
</select>
<select class='select' name='select2' id='select2'>
<option value='4'>4</option>
<option value='5'>5</option>
<option value='6'>6</option>
</select>
<select class='select' name='select3' id='select3'>
<option value='7'>7</option>
<option value='8'>8</option>
<option value='9'>9</option>
</select>
我知道这可以通过像这样的循环来实现
var arr = [];
$('.select').each(function () {
arr.push($(this).val());
});
但是我已经在代码中有这么多循环了,我想知道是否有任何方法可以在没有循环的情况下实现
答案 0 :(得分:9)
不,没有其他方法可以从多个元素中获取值,您必须迭代元素以从每个元素中获取值。
还有其他方法可以编写基本相同的代码
var arr = $.map($('.select'), function (el) { return el.value; });
或没有jQuery
var elems = document.querySelectorAll('.select'),
arr = [];
for (var i=elems.length; i--;) arr.push(elems[i].value);
但他们都在迭代,没有别的方法可以做到。
答案 1 :(得分:0)
您可以使用jquery的 $。map 函数处理元素数组
例如
var arr = [];
arr = $.map($(".select"),function(select){
return $(select).val();
});
console.log(arr);