¿Cómo se eliminan todas las opciones de un cuadro de selección y luego se agrega una opción y se selecciona con jQuery?

Resuelto Jay Corbett asked hace 16 años • 28 respuestas

Usando jQuery principal, ¿cómo se eliminan todas las opciones de un cuadro de selección, luego se agrega una opción y se selecciona?

Mi cuadro de selección es el siguiente.

<Select id="mySelect" size="9"> </Select>

EDITAR: El siguiente código fue útil para el encadenamiento. Sin embargo, (en Internet Explorer) .val('whatever')no seleccionó la opción que se agregó. (Utilicé el mismo 'valor' tanto en como .append) .val.

$('#mySelect').find('option').remove().end()
.append('<option value="whatever">text</option>').val('whatever');

EDITAR: Al intentar que imite este código, utilizo el siguiente código cada vez que se restablece la página/formulario. Este cuadro de selección está poblado por un conjunto de botones de opción. .focus()Estaba más cerca, pero la opción no aparecía seleccionada como ocurre con .selected= "true". No hay ningún problema con mi código existente; solo estoy intentando aprender jQuery.

var mySelect = document.getElementById('mySelect');
mySelect.options.length = 0;
mySelect.options[0] = new Option ("Foo (only choice)", "Foo");
mySelect.options[0].selected="true";

EDITAR: la respuesta seleccionada se acercaba a lo que necesitaba. Esto funcionó para mí:

$('#mySelect').children().remove().end()
.append('<option selected value="whatever">text</option>') ;

Pero ambas respuestas me llevaron a mi solución final.

Jay Corbett avatar Sep 07 '08 03:09 Jay Corbett
Aceptado
$('#mySelect')
    .find('option')
    .remove()
    .end()
    .append('<option value="whatever">text</option>')
    .val('whatever')
;
Matt avatar Sep 06 '2008 21:09 Matt
$('#mySelect')
    .empty()
    .append('<option selected="selected" value="whatever">text</option>')
;
Mahzilla avatar Dec 16 '2009 21:12 Mahzilla

¿Por qué no utilizar JavaScript simple?

document.getElementById("selectID").options.length = 0;
Shawn avatar Nov 13 '2013 19:11 Shawn

Si su objetivo es eliminar todas las opciones de la selección excepto la primera (normalmente la opción "Elija un elemento"), puede usar:

$('#mySelect').find('option:not(:first)').remove();
mauretto avatar Mar 27 '2013 09:03 mauretto