У меня есть поле выбора:
<select id="selectBox">
<option value="0">Number 0</option>
<option value="1">Number 1</option>
<option value="2">Number 2</option>
<option value="3">Number 3</option>
<option value="4">Number 4</option>
<option value="5">Number 5</option>
<option value="6">Number 6</option>
<option value="7">Number 7</option>
</select>
Я хотел бы установить один из параметров как «выбранный» на основе выбранного индекса.
Например, если я пытаюсь установить «Номер 3», я пытаюсь это:
$('#selectBox')[3].attr('selected', 'selected');
Но это не работает. Как я могу установить параметр, выбранный на основе его индекса с помощью jQuery?
Спасибо!
jquery
jquery-selectors
BoltClock
источник
источник
Ответы:
ПРИМЕЧАНИЕ : ответ зависит от jQuery 1.6.1+
Спасибо за комментарий,
.get
не будет работать, так как он возвращает элемент DOM, а не элемент jQuery. Имейте в виду, что эту.eq
функцию можно использовать и вне селектора, если вы предпочитаете.Вы также можете быть более краткими / читабельными, если хотите использовать значение , вместо того, чтобы полагаться на выбор определенного индекса :
Примечание:
.val(3)
в этом примере также работает, но нечисловые значения должны быть строками, поэтому я выбрал строку для согласованности.(например,
<option value="hello">Number3</option>
требует от вас использовать.val("hello")
)источник
.prop()
а не.attr()
.Это также может быть полезно, поэтому я решил добавить это сюда.
Если вы хотите выбрать значение, основанное на значении элемента, а не на индексе этого элемента, вы можете сделать следующее:
Ваш список выбора:
Jquery:
Выбранный пункт теперь будет «Номер 2».
источник
.attr('selected', 'selected')
в виду, что не следует использовать несколько раз для одного выбора, так как некоторые браузеры могут запутаться (в некоторых случаях они начинают отмечать несколько элементов в домене какselected=selected"
. Если вам нужно изменить выбранное значение чаще (например, на кнопке) нажмите) используйте,.prop('selected', true)
как предложено Марком. - Просто из-за этой проблемы было очень больно - и зря потратил время -Попробуйте это вместо этого:
источник
Еще проще:
источник
если вы хотите выбрать одним из лучших способов выбора набора, вы можете использовать
$('#select option').removeAttr('selected');
для удаления предыдущих выборов .источник
Важно понимать, что
val()
дляselect
элемента возвращается значение выбранного параметра, а не номер элемента, какselectedIndex
в javascript.Для выбора опции
value="7"
вы можете просто использовать:Для отмены выбора опции используйте пустой массив:
И, конечно, вы можете выбрать несколько вариантов *:
* Однако, чтобы выбрать несколько параметров, ваш
<select>
элемент должен иметьMULTIPLE
атрибут, иначе он не будет работать.источник
У меня всегда были проблемы с prop ('selected'), у меня всегда работало следующее:
источник
Попробуй это:
В конце концов, вызовите событие .change:
источник
Надеюсь, что это может помочь слишком
источник
выберите третий вариант
Пример на jsfiddle
источник
NB:
неверно, массив deference возвращает вам объект dom, а не объект jquery, поэтому он завершится с ошибкой TypeError, например, в FF с: "$ ('# selectBox option') [3] .attr () не является функцией «.
источник
Чтобы уточнить ответы Марка и Джона Кугельмана, вы можете использовать:
get()
не будет работать, если используется указанным способом, потому что он получает объект DOM, а не объект jQuery, поэтому следующее решение не будет работать:eq()
получает фильтры jQuery, установленные для элемента с указанным индексом. Это понятнее, чем$($('#selectBox option').get(3))
. Это не так уж и эффективно.$($('#selectBox option')[3])
является более эффективным (см. контрольный пример ).Вам на самом деле не нужен объект jQuery. Это сделает свое дело:
http://api.jquery.com/get/
http://api.jquery.com/eq/
Еще один жизненно важный момент:
Атрибут «выбранный» отличается от того, как указывается выбранный переключатель (по крайней мере, в Firefox и Chrome). Используйте проверенный атрибут:
То же самое касается флажков.
источник
В 1.4.4 вы получаете ошибку: $ («опция # selectBox») [3] .attr не является функцией
Это работает:
$('#name option:eq(idx)').attr('selected', true);
Где
#name
находится id выбора иidx
значение опции, которую вы хотите выбрать.источник
Чистый javascript атрибут selectedIndex - правильный путь, потому что он чистый javascript и работает в кросс-браузерном режиме:
Вот демоверсия jsfiddle с двумя раскрывающимися списками, использующими один для установки другого:
Вы также можете вызвать это перед изменением selectedIndex, если вам нужен атрибут «selected» в теге option ( здесь - скрипка ):
источник
источник
Я часто использую триггер («изменение»), чтобы заставить его работать
Пример с идентификатором select = selectA1 и position_index = 0 (опция frist в select):
источник
При использовании вышеизложенного я продолжал получать ошибки в webkit (Chrome), говоря:
"Uncaught TypeError: Object # не имеет метода attr"
Этот синтаксис останавливает эти ошибки.
источник
Выберите элемент на основе значения в списке выбора (особенно, если значения параметров содержат пробел или странный символ), просто выполнив это:
Кроме того, если у вас есть раскрывающийся список (в отличие от множественного выбора), вы можете захотеть сделать
break;
так, чтобы вы не получили первое найденное значение перезаписанным.источник
Мне нужно решение, которое не имеет жестко закодированных значений в файле js; используя
selectedIndex
. Большинство из приведенных решений подвело один браузер. Похоже, что это работает в FF10 и IE8 (может кто-то еще проверить в других версиях)источник
Если вы просто хотите выбрать элемент на основе определенного свойства элемента, то опция jQuery типа [prop = val] получит этот элемент. Теперь меня не волнует индекс, я просто хотел получить элемент по его значению.
источник
Я столкнулся с той же проблемой. Сначала вам нужно пройти через события (то есть, какое событие происходит первым).
Например:
Первое событие генерирует поле выбора с вариантами.
Второе событие выбирает опцию по умолчанию с помощью какой - либо функции , такие как вал () и т.д.
Вы должны убедиться, что Второе событие должно произойти после Первого события .
Чтобы достичь этого, возьмите две функции, скажем, generateSelectbox () (для генерирования выделенного блока) и selectDefaultOption ()
Вы должны убедиться, что selectDefaultOption () должен вызываться только после выполнения generateSelectbox ()
источник
Вы также можете инициализировать несколько значений, если ваш selectbox имеет множитель:
источник
Вы можете установить значение переменной selectoption динамически, а также вариант будет выбран. Вы можете попробовать следующий код
код:
HTML-код:
источник
Коротко:
$("#selectBox").attr("selectedIndex",index)
где индекс - это выбранный индекс как целое число.
источник