Как получить все варианты выбора, используя jQuery? - PullRequest
381 голосов
/ 26 февраля 2009

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

Я только ищу их значения, а не текст.

Ответы [ 15 ]

582 голосов
/ 26 февраля 2009

Использование:

$("#id option").each(function()
{
    // Add $(this).val() to your list
});

.each () | Документация по jQuery API

156 голосов
/ 26 февраля 2009

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

var myOpts = document.getElementById('yourselect').options;
alert(myOpts[0].value) //=> Value of the first option
130 голосов
/ 14 октября 2011

$.map, вероятно, самый эффективный способ сделать это.

var options = $('#selectBox option');

var values = $.map(options ,function(option) {
    return option.value;
});

Вы можете добавить параметры изменения к $('#selectBox option:selected'), если хотите, чтобы были выбраны только те, которые выбраны.

Первая строка выбирает все флажки и помещает их элемент jQuery в переменную. Затем мы используем функцию .map jQuery, чтобы применить функцию к каждому из элементов этой переменной; все, что мы делаем, это возвращаем значение каждого элемента, так как это все, что нас волнует. Поскольку мы возвращаем их внутри функции map, фактически создается массив значений в соответствии с запросом.

66 голосов
/ 26 февраля 2009

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

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

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

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

46 голосов
/ 26 февраля 2009
$('select#id').find('option').each(function() {
    alert($(this).val());
});
16 голосов
/ 30 апреля 2012
$("#id option").each(function()
{
    $(this).prop('selected', true);
});

Хотя способ CORRECT состоит в том, чтобы установить свойство DOM элемента следующим образом:

$("#id option").each(function(){
    $(this).attr('selected', true);
});
13 голосов
/ 26 февраля 2009

Это поместит значения параметров #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();});
11 голосов
/ 06 мая 2011

Вы можете взять все ваши «выбранные значения» по имени флажков и представить их в строке, отделенной «,».

Хороший способ сделать это - использовать jQuery's $ .map ():

var selected_val = $.map($("input[name='d_name']:checked"), function(a)
    {
        return a.value;
    }).join(',');

alert(selected_val);
6 голосов
/ 20 сентября 2013

Рабочий пример

Самый эффективный способ сделать это - использовать $.map()

Пример:

var values = $.map($('#selectBox option'), function(ele) {
   return ele.value; 
});
3 голосов
/ 19 февраля 2014

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

var assignedRoleId = new Array();
$('#RolesListAssigned option').each(function(){
    assignedRoleId.push(this.value);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...