<select size="2">
<option selected="selected">Input your option</option>
<option>Input your option</option>
</select>
Как лучше всего использовать jQuery, чтобы элегантно отменить выбор опции?
Используйте removeAttr ...
$("option:selected").removeAttr("selected");
Или опора
$("option:selected").prop("selected", false)
.val([])
или.prop("selected", false)
- прокрутки вниз.$("option:selected").prop("selected", false)
иногда не работает. (не работает в браузере Chrome с JQuery v1.4.2)Здесь есть много ответов, но, к сожалению, все они довольно старые и поэтому полагаются на
attr
/removeAttr
что на самом деле это не тот путь.@coffeeyesplease правильно упоминает, что хорошим кросс-браузерным решением является использование
Еще одно хорошее кросс-браузерное решение
Вы можете увидеть это запустить самопроверку здесь . Проверено на IE 7/8/9, FF 11, Chrome 19.
источник
Array.indexOf
для IE <9 требуется полифил (или вы можете использовать любой эквивалентный метод, который предоставляют многие библиотеки JS).$('#select').val([]);
? К сожалению, это не удаляетselected="selected"
атрибут. Это может в конечном итоге опубликовать неправильные данные. Я не рекомендую такой подход!Прошло много времени с тех пор, как меня спросили, и я не проверял это на старых браузерах, но мне кажется, что гораздо более простой ответ
.val () также работает для select http://api.jquery.com/val/
источник
$("select option").prop("selected", false);
работает универсально (на множественных и одиночных выборках).Самый простой метод
$('select').val('')
Я просто использовал это на самой выборке, и она сделала свое дело.
Я на jQuery 1.7.1 .
источник
Ответы пока работают только для множественного выбора в IE6 / 7; для более распространенного не множественного выбора вам нужно использовать:
Это объясняется в посте, связанном с flyfishr64. Если вы посмотрите на это, вы увидите, что есть 2 случая - мульти / не мульти. Ничто не останавливает вас от того, что вы хотите получить полное решение:
источник
Ой JQuery.
Поскольку есть еще нативный подход к JavaScript, я чувствую необходимость его предложить.
И просто, чтобы показать вам, насколько это быстрее: бенчмарк
источник
Это будет перебирать каждый элемент и отменять выбор только тех, которые отмечены
источник
Быстрый гугл нашел этот пост, в котором описывается, как делать то, что вы хотите для одного и нескольких списков выбора в IE. Решение кажется довольно элегантным:
источник
источник
источник
Большое спасибо за решение.
Решение для комбинированного списка с одним выбором работает отлично. Я нашел это после поиска на многих сайтах.
источник
источник
Еще один простой способ:
$("#selectedID")[0].selectedIndex = -1
источник
Обычно, когда я использую меню выбора, каждый параметр имеет значение, связанное с ним. Например
Теперь это не удаляет выбранный атрибут из опции, но все, что мне действительно нужно, это значение.
источник
Установите идентификатор на ваш выбор, например:
<select id="foo" size="2">
Тогда вы можете использовать:
$("#foo").prop("selectedIndex", 0).change();
источник