Альтернатива.val(), которая получает текущее значение всех элементов в наборе соответствующих элементов.
У меня есть 3 выбранных элемента, и я использую $(".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>
2 ответа
Решение
Используйте методы карты для этого:
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()