Используя ядро jQuery, как удалить все параметры в окне выбора, затем добавить один вариант и выбрать его?
Мой блок выбора следующий.
<Select id="mySelect" size="9"> </Select>
РЕДАКТИРОВАТЬ: Следующий код был полезен с цепочкой. Однако (в Internet Explorer) .val('whatever')
не был выбран параметр, который был добавлен. (Я использовал одно и то же значение в обоих .append
и .val
.)
$('#mySelect').find('option').remove().end()
.append('<option value="whatever">text</option>').val('whatever');
РЕДАКТИРОВАТЬ: Пытаясь заставить его подражать этот код, я использую следующий код всякий раз, когда страница / форма сбрасывается. Это поле выбора заполняется набором переключателей. .focus()
был ближе, но вариант не был выбран, как это было с .selected= "true"
. Нет ничего плохого в моем существующем коде - я просто пытаюсь изучить jQuery.
var mySelect = document.getElementById('mySelect');
mySelect.options.length = 0;
mySelect.options[0] = new Option ("Foo (only choice)", "Foo");
mySelect.options[0].selected="true";
РЕДАКТИРОВАТЬ: выбранный ответ был близок к тому, что мне нужно. Это сработало для меня:
$('#mySelect').children().remove().end()
.append('<option selected value="whatever">text</option>') ;
Но оба ответа привели меня к моему окончательному решению ..
источник
.append($("<option></option>").attr("value", '123').text('ABC!')
.append($("<option></option>", {'value':'123'}).text('ABC!')
источник
empty()
оказалось быстрее конечно;) jsperf.com/find-remove-vs-empty.val('whatever')
в конце цепочки, как в ответе Мэтта.почему бы просто не использовать простой JavaScript?
источник
Если ваша цель состоит в том, чтобы удалить все опции из выбора, кроме первого (как правило, «Пожалуйста, выберите пункт»), вы можете использовать:
источник
У меня была ошибка в IE7 (отлично работает в IE6), где использование вышеуказанных методов jQuery сбрасывало бы выбор в DOM, но не на экране. Используя панель инструментов IE Developer, я мог подтвердить, что выбор был очищен и имел новые элементы, но визуально выбор все еще показывал старые элементы, даже если вы не могли выбрать их.
Исправление состояло в том, чтобы использовать стандартные методы / свойства DOM (как и в оригинальном плакате) для очистки, а не jQuery - все еще используя jQuery для добавления опций.
источник
Не уверен, что именно вы подразумеваете под «добавить один и выбрать его», так как он будет выбран по умолчанию в любом случае. Но если бы вы добавили более одного, это имело бы больше смысла. Как насчет чего-то вроде:
Ответ на «РЕДАКТИРОВАТЬ» : Можете ли вы уточнить, что вы подразумеваете под «Это поле выбора заполнено набором переключателей»?
<select>
Элемент не может ( по закону) содержат<input type="radio">
элементы.источник
источник
источник
Благодаря полученным ответам я смог создать что-то вроде следующего, которое соответствует моим потребностям. Мой вопрос был несколько двусмысленным. Спасибо за продолжение. Моя последняя проблема была решена включением «выбранного» в опцию, которую я хотел выбрать.
источник
Как насчет просто изменить HTML на новые данные.
Другой пример:
источник
Сначала очистите все существующие опции, за исключением первого (- Выберите--)
Добавлять новые значения параметров, используя цикл один за другим
источник
Я нашел в сети что-то вроде ниже. С тысячами вариантов, как в моей ситуации, это намного быстрее, чем
.empty()
или.find().remove()
из jQuery.Больше информации здесь .
источник
Другой путь:
По этой ссылке есть хорошие практики https://api.jquery.com/select/
источник
В первой строке кода будут удалены все параметры поля выбора, поскольку критерии поиска параметров не были упомянуты.
Во второй строке кода добавится Option с указанным значением («testValue») и Text («TestText»).
источник
Основываясь на ответе Мауретто, это немного легче читать и понимать:
Чтобы удалить все параметры, кроме одного с определенным значением, вы можете использовать это:
Это было бы лучше, если бы добавляемая опция уже была там.
источник
Использует jquery prop (), чтобы очистить выбранную опцию
источник
Это заменит существующий mySelect новым mySelect.
источник
Вы можете сделать просто заменив HTML
источник
источник
источник
Я видел этот код в Select2 - Очистка выбора
Этот код хорошо работает с JQuery даже без Select2
источник
Надеюсь, это сработает
источник
источник