Альтернатива .val(), которая получает текущее значение всех элементов в наборе совпадающих элементов.

У меня есть 3 элемента выбора, и я использую $(".select-elem select").val(), чтобы получить значение каждого элемента выбора в массиве, но он возвращает значение только первого элемента в наборе совпадающих элементов. Например, если пользователь выбирает «2» для первого элемента выбора, «3» для второго и «4» для третьего, функция val() возвращает 2 вместо [2,3,4]. Есть ли функция, которая возвращала бы массив, содержащий значения всех трех выбранных элементов?

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

person ray9209    schedule 30.09.2014    source источник


Ответы (2)


Используйте для этого методы карты:

var values = $(".select-elem select").map(function() {
    return $(this).val();
}).get();
person dfsq    schedule 30.09.2014
comment
Это лучший ответ, чем принятый ответ. Нет необходимости расширять jQuery, когда есть такие методы, как map, которые делают это за вас. - person jasonscript; 30.09.2014

Создайте свой собственный метод 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()
person Manivannan    schedule 30.09.2014