<select size="2">
<option selected="selected">Input your option</option>
<option>Input your option</option>
</select>
¿Cuál es la mejor manera, usando jQuery, para deseleccionar elegantemente la opción?
Utilice removeAttr ...
$("option:selected").removeAttr("selected");
O apoyo
$("option:selected").prop("selected", false)
.val([])
o.prop("selected", false)
- desplácese hacia abajo.$("option:selected").prop("selected", false)
A veces no funciona. (no funciona en el navegador Chrome con jquery v1.4.2)Hay un montón de respuestas aquí, pero por desgracia todos ellos son bastante antiguos y por lo tanto se basan en
attr
/removeAttr
que en realidad no es el camino a seguir.@coffeeyesplease menciona correctamente que una buena solución para varios navegadores es usar
Otra buena solución de navegador cruzado es
Puedes verlo ejecutar una autocomprobación aquí . Probado en IE 7/8/9, FF 11, Chrome 19.
fuente
Array.indexOf
necesita un polyfill para IE <9 (o puede usar cualquier método equivalente que proporcionan muchas bibliotecas JS).$('#select').val([]);
? Desafortunadamente, esto no elimina elselected="selected"
atributo. Eso puede terminar publicando datos incorrectos. ¡No recomiendo este enfoque!Ha pasado un tiempo desde la pregunta, y no he probado esto en navegadores antiguos, pero me parece que una respuesta mucho más simple es
.val () funciona para select también http://api.jquery.com/val/
fuente
$("select option").prop("selected", false);
funciona universalmente (en selecciones múltiples y simples).Método más simple
$('select').val('')
Simplemente usé esto en la selección en sí y funcionó.
Estoy en jQuery 1.7.1 .
fuente
Las respuestas hasta ahora solo funcionan para selecciones múltiples en IE6 / 7; para la selección no múltiple más común, debe usar:
Esto se explica en la publicación vinculada por flyfishr64. Si lo miras, verás cómo hay 2 casos: múltiple / no múltiple. No hay nada que lo detenga buscando ambas para una solución completa:
fuente
Oh jquery
Como todavía existe un enfoque de JavaScript nativo, siento la necesidad de proporcionar uno.
Y solo para mostrarle cuánto más rápido es esto: punto de referencia
fuente
Esto iteraría por cada elemento y deseleccionaría solo los que están marcados
fuente
Un rápido google encontró esta publicación que describe cómo hacer lo que desea para las listas de selección única y múltiple en IE. La solución también parece bastante elegante:
fuente
fuente
fuente
Muchas gracias por la solución.
La solución para la lista combinada de opción única funciona perfectamente. Encontré esto después de buscar en muchos sitios.
fuente
fuente
Otra forma simple:
$("#selectedID")[0].selectedIndex = -1
fuente
Por lo general, cuando uso un menú de selección, cada opción tiene un valor asociado. Por ejemplo
Ahora, esto no elimina el atributo seleccionado de la opción, pero todo lo que realmente quiero es el valor.
fuente
Establezca una identificación en su selección, como:
<select id="foo" size="2">
Entonces puedes usar:
$("#foo").prop("selectedIndex", 0).change();
fuente