Jestem trochę zdezorientowany, jak uzyskać indeks wybranej opcji z <select>
elementu HTML .
Na tej stronie opisano dwie metody. Jednak obie zawsze wracają -1
. Oto mój kod jQuery:
$(document).ready(function(){
$("#dropDownMenuKategorie").change(function(){
alert($("#dropDownMenuKategorie option:selected").index());
alert($("select[name='dropDownMenuKategorie'] option:selected").index());
});
});
i 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>
(...)
Dlaczego to zachowanie? Czy jest jakaś szansa, że select
nie jest „gotowa” w momencie przypisania swojej change()
metody? Dodatkowo zmiana .index()
na .val()
zwraca właściwą wartość, więc to jeszcze bardziej mnie dezorientuje.
[name=]
używany, gdy maid
na nim wybór. Odpowiedzi[0].selectedIndex
ioption:selected
odpowiedzi poniżej są w porządku.Odpowiedzi:
Wydaje się, że pierwsze metody działają w przeglądarkach, które testowałem, ale tagi opcji tak naprawdę nie odpowiadają rzeczywistym elementom we wszystkich przeglądarkach, więc wynik może się różnić.
Po prostu użyj
selectedIndex
właściwości elementu DOM:Aktualizacja:
Od wersji 1.6 jQuery ma
prop
metodę, której można użyć do odczytu właściwości:źródło
[0]
?selectedIndex
właściwości. Dodanie[0]
konwertuje obiekt jquery na obiekt javascript, który ma tęselectedIndex
właściwość. Ten przykład nie zadziała bez[0]
selectedIndex
jest właściwością i nie ma odpowiedniego atrybutu.attr
Metoda może działać, aby odczytać właściwość w wersjach wcześniejszych niż 1.6, ale nie od tej wersji.selectedIndex
pierwsza opcja nie zaczyna się od 0?selectedIndex
Właściwość opiera się zero. Sprawdziłem dokumentację, a nawet spróbowałem sam, aby być naprawdę w 100% pewien.Dobry sposób na rozwiązanie tego problemu w jquery
źródło
[0]
preferowanej odpowiedzi OP, a jako programista Pythona naprawdę doceniam czytelność tej odpowiedzi.Mam trochę inne rozwiązanie na podstawie odpowiedzi użytkownika167517. W mojej funkcji używam zmiennej dla identyfikatora pola wyboru, do którego celuję.
Indeks jest zwracany z:
źródło
Możesz użyć
.prop(propertyName)
funkcji, aby uzyskać właściwość z pierwszego elementu w obiekcie jQuery.Dzięki temu Twój kod pozostaje w dziedzinie jQuery, a także unika się innej opcji użycia selektora w celu znalezienia wybranej opcji. Następnie możesz go przywrócić, używając przeciążenia:
źródło
Spróbuj tego
źródło
selectedIndex to właściwość Select JavaScript. W przypadku jQuery możesz użyć tego kodu:
źródło
Możesz uzyskać indeks pola wyboru używając metody: .prop () JQuery
Sprawdź to :
źródło