<select size="2">
<option selected="selected">Input your option</option>
<option>Input your option</option>
</select>
Qual é a melhor maneira, usando o jQuery, para desmarcar a opção com elegância?
Use removeAttr ...
$("option:selected").removeAttr("selected");
Or Prop
$("option:selected").prop("selected", false)
.val([])
ou.prop("selected", false)
- role para baixo.$("option:selected").prop("selected", false)
às vezes não está funcionando. (não funciona no Chrome navegador com v1.4.2 jquery)Existem muitas respostas aqui, mas infelizmente todas elas são bastante antigas e, portanto, dependem
attr
/ oremoveAttr
que realmente não é o caminho a percorrer.@coffeeyesplease menciona corretamente que uma boa solução entre navegadores deve usar
Outra boa solução entre navegadores é
Você pode vê-lo executar um autoteste aqui . Testado no IE 7/8/9, FF 11, Chrome 19.
fonte
Array.indexOf
precisa de um polyfill para o IE <9 (ou você pode usar qualquer método equivalente fornecido por muitas bibliotecas JS).$('#select').val([]);
? Infelizmente, isso não remove oselected="selected"
atributo. Isso pode acabar postando dados incorretos. Eu não recomendo esta abordagem!Já faz um tempo que pedimos, e eu não testei isso em navegadores antigos, mas me parece uma resposta muito mais simples:
.val () também funciona para select http://api.jquery.com/val/
fonte
$("select option").prop("selected", false);
funciona universalmente (em seleções múltiplas e únicas).Método mais simples
$('select').val('')
Simplesmente usei isso no próprio select e ele fez o truque.
Estou no jQuery 1.7.1 .
fonte
Até agora, as respostas funcionam apenas para várias seleções no IE6 / 7; para a seleção não múltipla mais comum, você precisa usar:
Isso é explicado no post vinculado por flyfishr64. Se você olhar para ele, verá como existem 2 casos - multi / não-multi. Não há nada que o impeça de procurar uma solução completa:
fonte
Oh jquery.
Como ainda existe uma abordagem nativa de javascript, sinto a necessidade de fornecer uma.
E apenas para mostrar o quanto mais rápido isso é: referência
fonte
Isso iria percorrer cada item e desmarcar apenas os que estão marcados
fonte
Um rápido google encontrou este post que descreve como fazer o que você deseja para listas de seleção únicas e múltiplas no IE. A solução também parece bastante elegante:
fonte
fonte
fonte
Muito obrigado pela solução.
A solução para a lista de combinação de escolha única funciona perfeitamente. Encontrei isso depois de pesquisar em muitos sites.
fonte
fonte
Outra maneira simples:
$("#selectedID")[0].selectedIndex = -1
fonte
Normalmente, quando eu uso um menu de seleção, cada opção tem um valor associado. Por exemplo
Agora, isso não remove o atributo selecionado da opção, mas tudo o que realmente quero é o valor.
fonte
Defina um ID no seu select, como:
<select id="foo" size="2">
Então você pode usar:
$("#foo").prop("selectedIndex", 0).change();
fonte