Ответов (18)18
$.map
вероятно, самый эффективный способ сделать это.
var options = $('#selectBox option');
var values = $.map(options ,function(option) {
return option.value;
});
Вы можете добавить параметры изменения, $('#selectBox option:selected')
если вам нужны только те, которые выбраны.
Первая строка выбирает все флажки и помещает их элемент jQuery в переменную. Затем мы используем .map
функцию jQuery, чтобы применить функцию к каждому из элементов этой переменной; все, что мы делаем, - это возвращаем значение каждого элемента, поскольку это все, что нас волнует. Поскольку мы возвращаем их внутри функции карты, она фактически строит массив значений в соответствии с запросом.
Это простой скрипт с jQuery:
var items = $("#IDSELECT > option").map(function() {
var opt = {};
opt[$(this).val()] = $(this).text();
return opt;
}).get();
var selectvalues = [];
for(var i = 0; i < items.length; i++) {
for(key in items[i]) {
var id = key;
var text = items[i][key];
item = {}
item ["id"] = id;
item ["text"] = text;
selectvalues.push(item);
}
}
console.log(selectvalues);
copy(selectvalues);
<select>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>
Вот простой пример в jquery, чтобы получить все значения, тексты или значение выбранного элемента, или текст выбранного элемента.
$('#nCS1 > option').each((index, obj) => {
console.log($(obj).val());
})
printOptionValues = () => {
$('#nCS1 > option').each((index, obj) => {
console.log($(obj).val());
})
}
printOptionTexts = () => {
$('#nCS1 > option').each((index, obj) => {
console.log($(obj).text());
})
}
printSelectedItemText = () => {
console.log($('#nCS1 option:selected').text());
}
printSelectedItemValue = () => {
console.log($('#nCS1 option:selected').val());
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select size="1" id="nCS1" name="nCS1" class="form-control" >
<option value="22">Australia</option>
<option value="23">Brunei</option>
<option value="33">Cambodia</option>
<option value="32">Canada</option>
<option value="27">Dubai</option>
<option value="28">Indonesia</option>
<option value="25">Malaysia</option>
</select>
<br/>
<input type='button' onclick='printOptionValues()' value='print option values' />
<br/>
<input type='button' onclick='printOptionTexts()' value='print option texts' />
<br/>
<input type='button' onclick='printSelectedItemText()' value='print selected option text'/>
<br/>
<input type='button' onclick='printSelectedItemValue()' value='print selected option value' />
var arr = [], option='';
$('select#idunit').find('option').each(function(index) {
arr.push ([$(this).val(),$(this).text()]);
//option = '<option '+ ((result[0].idunit==arr[index][0])?'selected':'') +' value="'+arr[index][0]+'">'+arr[index][1]+'</option>';
});
console.log(arr);
//$('select#idunit').empty();
//$('select#idunit').html(option);
Короткий путь
$(() => {
$('#myselect option').each((index, data) => {
console.log(data.attributes.value.value)
})})
или
export function GetSelectValues(id) {
const mData = document.getElementById(id);
let arry = [];
for (let index = 0; index < mData.children.length; index++) {
arry.push(mData.children[index].value);
}
return arry;}
Некоторые ответы используются each
, но map
это лучшая альтернатива здесь ИМХО:
$("select#example option").map(function() {return $(this).val();}).get();
В map
jQuery есть (как минимум) две функции. Ответ Томаса Петерсена использует "Utilities / jQuery.map"; в этом ответе используется «Traversing / map» (и, следовательно, немного более чистый код).
Это зависит от того, что вы собираетесь делать со значениями. Если вы, скажем, хотите вернуть значения из функции, map
это, вероятно, лучшая альтернатива. Но если вы собираетесь использовать значения напрямую, вы, вероятно, захотите each
.