<select size="2">
<option selected="selected">Input your option</option>
<option>Input your option</option>
</select>
Quelle est la meilleure façon, à l'aide de jQuery, de désélectionner élégamment l'option?
Utilisez removeAttr ...
$("option:selected").removeAttr("selected");
Ou Prop
$("option:selected").prop("selected", false)
.val([])
ou.prop("selected", false)
- faites défiler vers le bas.$("option:selected").prop("selected", false)
parfois ne fonctionne pas. (ne fonctionne pas dans le navigateur Chrome avec jquery v1.4.2)Il y a beaucoup de réponses ici, mais malheureusement toutes sont assez anciennes et s'appuient donc sur
attr
/removeAttr
ce qui n'est vraiment pas la voie à suivre.@coffeeyesplease mentionne correctement qu'une bonne solution multi-navigateur consiste à utiliser
Une autre bonne solution multi-navigateur est
Vous pouvez le voir exécuter un auto-test ici . Testé sur IE 7/8/9, FF 11, Chrome 19.
la source
Array.indexOf
besoin d'un polyfill pour IE <9 (ou vous pouvez utiliser n'importe quelle méthode équivalente fournie par de nombreuses bibliothèques JS).$('#select').val([]);
? Malheureusement, cela ne supprime pas l'selected="selected"
attribut. Cela peut finir par afficher des données erronées. Je ne recommande pas cette approche!Cela fait un moment qu'on ne m'a pas demandé, et je n'ai pas testé cela sur des navigateurs plus anciens mais il me semble qu'une réponse beaucoup plus simple
.val () fonctionne également pour select http://api.jquery.com/val/
la source
$("select option").prop("selected", false);
fonctionne universellement (sur les sélections multiples et simples).Méthode la plus simple
$('select').val('')
J'ai simplement utilisé cela sur la sélection elle-même et cela a fait l'affaire.
Je suis sur jQuery 1.7.1 .
la source
Jusqu'à présent, les réponses ne fonctionnent que pour plusieurs sélections dans IE6 / 7; pour la sélection non multi plus courante, vous devez utiliser:
Ceci est expliqué dans le post lié par flyfishr64. Si vous le regardez, vous verrez comment il y a 2 cas - multi / non multi. Rien ne vous empêche de chanter les deux pour une solution complète:
la source
Oh jquery.
Puisqu'il existe encore une approche javascript native, je ressens le besoin d'en fournir une.
Et juste pour vous montrer à quel point c'est plus rapide: benchmark
la source
Cela parcourrait chaque élément et désélectionnerait uniquement ceux qui sont cochés
la source
Un rapide google a trouvé ce post qui décrit comment faire ce que vous voulez pour les listes de sélection simples et multiples dans IE. La solution semble également assez élégante:
la source
la source
la source
Merci beaucoup pour la solution.
La solution pour la liste combinée à choix unique fonctionne parfaitement. J'ai trouvé cela après avoir recherché sur de nombreux sites.
la source
la source
Un autre moyen simple:
$("#selectedID")[0].selectedIndex = -1
la source
Habituellement, lorsque j'utilise un menu de sélection, chaque option a une valeur qui lui est associée. Par exemple
Maintenant, cela ne supprime pas l'attribut sélectionné de l'option, mais tout ce que je veux vraiment, c'est la valeur.
la source
Définissez un identifiant dans votre sélection, comme:
<select id="foo" size="2">
Ensuite, vous pouvez utiliser:
$("#foo").prop("selectedIndex", 0).change();
la source