jQuery从没有循环的数组中的多个元素的类属性获取值

时间:2014-03-19 13:45:44

标签: javascript jquery arrays

我有多个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());
});

但是我已经在代码中有这么多循环了,我想知道是否有任何方法可以在没有循环的情况下实现

小提琴:http://jsfiddle.net/89cJC/

2 个答案:

答案 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);