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");
Utilizar:
$("#id option").each(function()
{
// Add $(this).val() to your list
});
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());
});