Supongamos que hay una lista de opciones disponible, ¿cómo se actualiza el <select>
con el nuevo <option>
s?¿Cómo cambiar las opciones de <select> con jQuery?
Respuesta
Puede eliminar las opciones existentes utilizando el método empty
, y luego añadir sus nuevas opciones:
var option = $('<option></option>').attr("value", "option value").text("Text");
$("#selectId").empty().append(option);
Si tener sus nuevas opciones en un objeto puede:
var newOptions = {"Option 1": "value1",
"Option 2": "value2",
"Option 3": "value3"
};
var $el = $("#selectId");
$el.empty(); // remove old options
$.each(newOptions, function(key,value) {
$el.append($("<option></option>")
.attr("value", value).text(key));
});
Editar: Para la eliminación de los todas las opciones, pero la primera, puede utilizar el selector :gt
, para obtener todos los option
elementos con un índice mayor que cero y remove
ellos:
$('#selectId option:gt(0)').remove(); // remove all options, but not the first
$('#comboBx').append($("<option></option>").attr("value",key).text(value));
donde comboBx es su ID de cuadro combinado.
o puede agregar opciones como cadenas al innerHTML ya existente y luego asignarlas a la selección innerHTML.
Edición
Si usted necesita para mantener la primera opción y eliminar todos los demás, puede utilizar
var firstOption = $("#cmb1 option:first-child");
$("#cmb1").empty().append(firstOption);
lancé una excelente respuesta de CMS en una rápida extensión de jQuery:
(function($, window) {
$.fn.replaceOptions = function(options) {
var self, $option;
this.empty();
self = this;
$.each(options, function(index, option) {
$option = $("<option></option>")
.attr("value", option.value)
.text(option.text);
self.append($option);
});
};
})(jQuery, window);
Se espera una matriz de objetos que contienen claves de "texto" y "valor". Así que el uso es el siguiente:
var options = [
{text: "one", value: 1},
{text: "two", value: 2}
];
$("#foo").replaceOptions(options);
Por alguna extraña razón, esta parte
$el.empty(); // remove old options
de la solución CMS que no funcionó para mí, así que en vez de que simplemente he utilizado este
el.html(' ');
Y es un trabajo. Así que mi código de trabajo ahora se ve así:
var newOptions = {
"Option 1":"option-1",
"Option 2":"option-2"
};
var $el = $('.selectClass');
$el.html(' ');
$.each(newOptions, function(key, value) {
$el.append($("<option></option>")
.attr("value", value).text(key));
});
Si por ejemplo el código HTML contienen este código:
<select id="selectId"><option>Test1</option><option>Test2</option></select>
Con el fin de cambiar la lista de opción dentro de su selección, se puede utilizar este código bramido. cuando su nombre seleccione nombrado , seleccione Id.
var option = $('<option></option>').attr("value", "option value").text("Text");
$("#selectId").html(option);
en este ejemplo anterior cambio la antigua lista de opción por sólo una nueva opción.
¿Por qué el OP debería intentar esto? Agregue una explicación de lo que hizo y por qué lo hizo de esa manera no solo para el OP, sino para los futuros visitantes de SO. –
Eliminar y agregar el elemento DOM es más lento que la modificación del existente.
Si los conjuntos de opciones tienen la misma longitud, es posible hacer algo como esto:
$('#my-select option')
.each(function(index) {
$(this).text('someNewText').val('someNewValue');
});
En caso de que su nuevo conjunto de opciones tiene una longitud diferente, es posible eliminar/añadir opciones vacías que realmente necesita, utilizando alguna técnica descrito arriba.
Si actualizamos <select>
constantemente y tenemos que guardar el valor anterior:
var newOptions = {
'Option 1':'value-1',
'Option 2':'value-2'
};
var $el = $('#select');
var prevValue = $el.val();
$el.empty();
$.each(newOptions, function(key, value) {
$el.append($('<option></option>').attr('value', value).text(key));
if (value === prevValue){
$el.val(value);
}
});
$el.trigger('change');
¿Esto ayuda?
$("#SelectName option[value='theValueOfOption']")[0].selected = true;
Esta pregunta se trata de agregar dinámicamente
- 1. Django: cómo cambiar las opciones de AdminTimeWidget
- 2. ¿Cómo las opciones de filtro dinámico de <select > con jQuery?
- 3. Cambiar las opciones en el cuadro de selección según las diferentes opciones de selección
- 4. jQuery - deshabilitar las opciones seleccionadas
- 5. Highcharts cómo cambiar las opciones de eje x
- 6. jQuery Datepicker con múltiples opciones
- 7. Complementos de Jquery: cómo acceder a las opciones?
- 8. jQuery UI: diálogo mostrar/ocultar efectos con las opciones
- 9. Alerta con varias opciones con jQuery
- 10. PyScripter - cambiar las opciones de resaltado/combinación de colores Python
- 11. Manejar opciones complejas con las opciones de programa de Boost
- 12. R + ggplot: cómo cambiar opciones por faceta
- 13. cómo cambiar las opciones de selección en función de otra opción de selección seleccionada?
- 14. cambiar las dimensiones de la imagen con jquery
- 15. JQuery Mobile ¿Agregar las opciones de la pantalla de inicio?
- 16. ¿Cómo puedo cambiar las opciones de un widget de jQuery UI después de que se haya creado?
- 17. Iterar a través de <select> opciones
- 18. Opciones de jQuery plugin: obligatorio, opcional, inaccesible
- 19. Cambiar las posiciones de 2 divs con jQuery
- 20. jQuery lista de selección elimina todas las opciones
- 21. jquery seleccione las opciones de entrada, excepto una
- 22. Cambiar las opciones del menú contextual en VS2008
- 23. jquery buscar seleccionar opciones atributos
- 24. cómo modificar las opciones en las páginas de administración - Django
- 25. jQuery eliminar opciones de seleccionar
- 26. Android cómo escalar una imagen con las opciones de BitmapFactory
- 27. Wicket, ¿cómo cargar las opciones de DropDown con un clic?
- 28. ¿Cómo verificar con jquery si seleccionar tiene opciones?
- 29. ¿Cuáles son las opciones para los efectos animados de jQuery?
- 30. Formulario de administración de Django: cómo cambiar las opciones de selección de forma dinámica?
¿Cómo seguir siendo la primera opción cuando está vacío()? – Mask
+1 para '$ ('# optionId option: gt (0)'). Remove();' –
Si usa [bootstrap-select] (https://silviomoreto.github.io/bootstrap-select/) luego agregue lo siguiente para actualizar el selector de selección después de reemplazar las opciones: '$ ('# selectId'). selectpicker ('refresh'); $ ('# selectId'). selectpicker ('render'); '. De lo contrario, las nuevas opciones no serán visibles en su lista de selección. – phn