<select size="2">
<option selected="selected">Input your option</option>
<option>Input your option</option>
</select>
Jaki jest najlepszy sposób, używając jQuery, aby elegancko odznaczyć opcję?
Użyj removeAttr ...
$("option:selected").removeAttr("selected");
Lub prop
$("option:selected").prop("selected", false)
.val([])
albo.prop("selected", false)
- przewiń w dół.$("option:selected").prop("selected", false)
czasami nie działa. (nie działa w przeglądarce Chrome z jquery v1.4.2)Tutaj jest wiele odpowiedzi, ale niestety wszystkie są dość stare i dlatego polegają na
attr
/removeAttr
co tak naprawdę nie jest właściwą drogą.@coffeeyesplease poprawnie wspomina, że należy użyć dobrego rozwiązania dla różnych przeglądarek
Innym dobrym rozwiązaniem dla różnych przeglądarek jest
Możesz zobaczyć, jak uruchamia się tutaj autotest . Testowane na IE 7/8/9, FF 11, Chrome 19.
źródło
Array.indexOf
wymaga wypełnienia dla IE <9 (lub możesz użyć dowolnej równoważnej metody, którą zapewnia wiele bibliotek JS).$('#select').val([]);
? Niestety nie usuwa tegoselected="selected"
atrybutu. Może to spowodować opublikowanie niewłaściwych danych. Nie polecam tego podejścia!Minęło trochę czasu, odkąd zapytałem, i nie testowałem tego na starszych przeglądarkach, ale wydaje mi się, że odpowiedź jest znacznie prostsza
.val () działa również dla select http://api.jquery.com/val/
źródło
$("select option").prop("selected", false);
działa uniwersalnie (na selekcje wielokrotne i pojedyncze).Najprostsza metoda
$('select').val('')
Po prostu użyłem tego na samej selekcji i załatwiłem sprawę.
Jestem na jQuery 1.7.1 .
źródło
Odpowiedzi do tej pory działają tylko dla wielu selekcji w IE6 / 7; w przypadku bardziej powszechnego wyboru innego niż wielokrotny musisz użyć:
Wyjaśnia to post zamieszczony przez flyfishr64. Jeśli spojrzysz na to, zobaczysz, jak są 2 przypadki - multi / non-multi. Nic nie stoi na przeszkodzie, byś wybrał jedno i drugie rozwiązanie:
źródło
Och jquery.
Ponieważ istnieje jeszcze natywne podejście do javascript, czuję potrzebę jego zapewnienia.
I po prostu, aby pokazać, jak szybko to jest: test porównawczy
źródło
Spowodowałoby to iterację każdego elementu i odznaczenie tylko tych, które są zaznaczone
źródło
Szybki google znalazł ten post, który opisuje, jak robić to, co chcesz dla pojedynczej i wielu list wyboru w IE. Rozwiązanie wydaje się również dość eleganckie:
źródło
źródło
źródło
Wielkie dzięki za rozwiązanie.
Rozwiązanie dla listy kombi z jednym wyborem działa idealnie. Znalazłem to po przeszukaniu wielu stron.
źródło
źródło
Kolejny prosty sposób:
$("#selectedID")[0].selectedIndex = -1
źródło
Zwykle, gdy korzystam z menu wyboru, do każdej opcji jest przypisana wartość. Na przykład
To nie usuwa wybranego atrybutu z opcji, ale tak naprawdę chcę tylko wartości.
źródło
Ustaw identyfikator w swoim wyborze, na przykład:
<select id="foo" size="2">
Następnie możesz użyć:
$("#foo").prop("selectedIndex", 0).change();
źródło