Меня немного смущает, как получить индекс выбранной опции из <select>
элемента HTML .
На этой странице описаны два метода. Тем не менее, оба всегда возвращаются -1
. Вот мой код jQuery:
$(document).ready(function(){
$("#dropDownMenuKategorie").change(function(){
alert($("#dropDownMenuKategorie option:selected").index());
alert($("select[name='dropDownMenuKategorie'] option:selected").index());
});
});
и в HTML
(...)
<select id="dropDownMenuKategorie">
<option value="gastronomie">Gastronomie</option>
<option value="finanzen">Finanzen</option>
<option value="lebensmittel">Lebensmittel</option>
<option value="gewerbe">Gewerbe</option>
<option value="shopping">Shopping</option>
<option value="bildung">Bildung</option>
</select>
(...)
Почему это поведение? Есть ли вероятность того, что select
он не «готов» в момент назначения change()
метода? Кроме того, переключение .index()
на .val()
возвращает правильное значение, так что меня это еще больше смущает.
[name=]
используется selectid
. И-[0].selectedIndex
иoption:selected
ответы ниже оба в порядке.Ответы:
Похоже, что первые методы работают в браузерах, которые я тестировал, но теги параметров на самом деле не соответствуют фактическим элементам во всех браузерах, поэтому результат может отличаться.
Просто используйте
selectedIndex
свойство элемента DOM:Обновить:
Начиная с версии 1.6, в jQuery есть
prop
метод, который можно использовать для чтения свойств:источник
[0]
?selectedIndex
свойства. Добавление[0]
преобразует объект jquery в объект javascript, который обладаетselectedIndex
свойством. Этот пример не будет работать без[0]
selectedIndex
это свойство, и нет соответствующего атрибута.attr
Метод может работать , чтобы прочитать свойство в версиях ранее чем 1.6, но не от этой версии.selectedIndex
не начинается с 0 с первым вариантом?selectedIndex
Свойство нуля на основе. Я проверил документацию и даже попробовал сам, чтобы быть на 100% уверенным в этом.Хороший способ решить это в Jquery манере
источник
[0]
предпочтительного ответа OP, и как разработчик Python, я действительно могу оценить читабельность этого ответа.У меня немного другое решение, основанное на ответе пользователя 167517. В моей функции я использую переменную для идентификатора поля выбора, на которое нацеливаюсь.
Индекс возвращается с:
источник
Вы можете использовать
.prop(propertyName)
функцию, чтобы получить свойство из первого элемента в объекте jQuery.Это удерживает ваш код в области jQuery, а также позволяет избежать другой возможности использования селектора для поиска выбранной опции. Затем вы можете восстановить его, используя перегрузку:
источник
попробуй это
источник
selectedIndex - это свойство JavaScript Select. Для jQuery вы можете использовать этот код:
источник
Вы можете получить индекс поля выбора с помощью: .prop () метода JQuery
Проверь это :
источник