val name javascript jquery jquery-selectors

javascript - name - ¿Cómo obtener todas las opciones de un selecto utilizando jQuery?



jquery selector (14)

Algunas respuestas usan each , pero el map es una mejor alternativa aquí IMHO:

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

Hay (al menos) dos funciones de map en jQuery. La respuesta de Thomas Petersen usa "Utilities / jQuery.map"; esta respuesta utiliza "Traversing / map" (y, por lo tanto, un código un poco más limpio).

Depende de lo que vayas a hacer con los valores. Si, digamos, quiere devolver los valores de una función, el map es probablemente la mejor alternativa. Pero si va a utilizar los valores directamente, es probable que desee each .

¿Cómo puedo obtener todas las opciones de una selección a través de jQuery al pasar su ID?

Sólo estoy buscando para obtener sus valores, no el texto.


Este es un Script simple con 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>


Esto colocará los valores de opción de #myselectbox en una buena matriz limpia para ti:

// 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();});


No sé jQuery, pero sí sé que si obtiene el elemento de selección, contiene un objeto ''opciones''.

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


Para opción multiselección:

$(''#test'').val() devuelve la lista de valores seleccionados. $(''#test option'').length devuelve el número total de opciones (ambas seleccionadas y no seleccionadas)


Puede tomar todos sus "valores seleccionados" por el nombre de las casillas de verificación y presentarlos en una picadura separada por ",".

Una buena manera de hacer esto es usar $ .map () de jQuery:

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


Puedes usar el siguiente código para eso:

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


Si está buscando todas las opciones con algún texto seleccionado, el siguiente código funcionará.

$(''#test'').find("select option:contains(''B'')").filter(":selected");



Ejemplo de trabajo

La forma más eficiente de hacer esto es usar $.map()

Ejemplo:

var values = $.map($(''#selectBox option''), function(ele) { return ele.value; });


$.map es probablemente la forma más eficiente de hacer esto.

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

Puede agregar opciones de cambio a $(''#selectBox option:selected'') si solo desea las que están seleccionadas.

La primera línea selecciona todas las casillas de verificación y coloca su elemento jQuery en una variable. Luego usamos la función .map de jQuery para aplicar una función a cada uno de los elementos de esa variable; todo lo que estamos haciendo es devolver el valor de cada elemento, ya que eso es todo lo que nos importa. Debido a que los estamos devolviendo dentro de la función de mapa, en realidad construye una matriz de los valores tal como se solicita.


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

Aunque, la forma CORRECTA es establecer la propiedad DOM del elemento, así:

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


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

O:

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

Para ver los resultados:

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


$(''select#id'').find(''option'').each(function() { alert($(this).val()); });