[javascript] Как получить все варианты выбора с помощью jQuery?



6 Answers

Я не знаю jQuery, но я знаю, что если вы получите элемент select, он содержит объект «options».

var myOpts = document.getElementById('yourselect').options;
alert(myOpts[0].value) //=> Value of the first option
Question

Как я могу получить все варианты выбора через jQuery, передав его идентификатор?

Я просто хочу получить их ценности, а не текст.




Это #myselectbox значения параметра #myselectbox в хороший чистый массив для вас:

// First, get the elements into a list
var domelts = $('#myselectbox option');

// Next, translate that into an array of just the values
var values = $.map(domelts, function(elt, i) { return $(elt).val();});



Некоторые ответы используют each , но map - лучшая альтернатива здесь. ИМХО:

$("select#example option").map(function() {return $(this).val();}).get();

В jQuery есть (по крайней мере) две функции map . Ответ Томаса Петерсена использует «Utilities / jQuery.map»; этот ответ использует «Traversing / map» (и, следовательно, немного более чистый код).

Это зависит от того, что вы собираетесь делать со значениями. Если вы, скажем, хотите вернуть значения из функции, то, вероятно, map является лучшей альтернативой. Но если вы собираетесь использовать значения напрямую, вы, вероятно, захотите их.




Это простой скрипт с 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>



$("#id option").each(function()
{
    $(this).prop('selected', true);
});

Хотя, ПРАВИЛЬНЫЙ способ - установить свойство DOM элемента, например:

$("#id option").each(function(){
    $(this).attr('selected', true);
});



$("input[type=checkbox][checked]").serializeArray();

Или:

$(".some_class[type=checkbox][checked]").serializeArray();

Чтобы увидеть результаты:

alert($("input[type=checkbox][checked]").serializeArray().toSource());



Вы можете использовать следующий код для этого:

var assignedRoleId = new Array();
$('#RolesListAssigned option').each(function(){
    assignedRoleId.push(this.value);
});





Related