Ich bin ein bisschen verwirrt darüber, wie man einen Index einer ausgewählten Option aus einem HTML- <select>
Element erhält .
Auf dieser Seite werden zwei Methoden beschrieben. Beide kehren jedoch immer wieder zurück -1
. Hier ist mein jQuery-Code:
$(document).ready(function(){
$("#dropDownMenuKategorie").change(function(){
alert($("#dropDownMenuKategorie option:selected").index());
alert($("select[name='dropDownMenuKategorie'] option:selected").index());
});
});
und in 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>
(...)
Warum dieses Verhalten? Gibt es eine Chance, dass der select
zum Zeitpunkt der Zuweisung seiner change()
Methode nicht "bereit" ist ? Darüber hinaus gibt der Wechsel .index()
zu .val()
den richtigen Wert zurück, was mich noch mehr verwirrt.
[name=]
verwendet wird, wenn select darauf stehtid
. Die[0].selectedIndex
undoption:selected
-Antworten unten sind beide in Ordnung.Antworten:
Die ersten Methoden scheinen in den von mir getesteten Browsern zu funktionieren, aber die Options-Tags entsprechen nicht wirklich den tatsächlichen Elementen in allen Browsern, sodass das Ergebnis variieren kann.
Verwenden Sie einfach die
selectedIndex
Eigenschaft des DOM-Elements:Aktualisieren:
Seit Version 1.6 verfügt jQuery über die
prop
Methode, mit der Eigenschaften gelesen werden können:quelle
[0]
?selectedIndex
Eigentum. Durch Hinzufügen[0]
wird das jquery-Objekt in ein Javascript-Objekt konvertiert, das dieselectedIndex
Eigenschaft hat. Dieses Beispiel funktioniert nicht ohne[0]
selectedIndex
eine Eigenschaft und es gibt kein entsprechendes Attribut. Dieattr
Methode funktioniert möglicherweise, um die Eigenschaft in früheren Versionen als 1.6 zu lesen, jedoch nicht in dieser Version.selectedIndex
bei der ersten Option nicht bei 0 beginnt?selectedIndex
Eigenschaft basiert auf Null. Ich habe die Dokumentation überprüft und es sogar selbst versucht, um wirklich 100% sicher zu sein.Guter Weg, um dies auf Jquery-Weise zu lösen
quelle
[0]
von OP bevorzugte Antwort erfordert , und als Python-Entwickler kann ich die Lesbarkeit dieser Antwort wirklich schätzen.Ich habe eine etwas andere Lösung basierend auf der Antwort von user167517. In meiner Funktion verwende ich eine Variable für die ID des Auswahlfelds, auf das ich abziele.
Der Index wird zurückgegeben mit:
quelle
Mit der
.prop(propertyName)
Funktion können Sie eine Eigenschaft aus dem ersten Element im jQuery-Objekt abrufen.Dies hält Ihren Code im jQuery-Bereich und vermeidet auch die andere Option, einen Selektor zu verwenden, um die ausgewählte Option zu finden. Sie können es dann mithilfe der Überladung wiederherstellen:
quelle
Versuche dies
quelle
selectedIndex ist eine JavaScript Select-Eigenschaft. Für jQuery können Sie diesen Code verwenden:
quelle
Sie können den Index des Auswahlfelds mithilfe der .prop () -Methode von JQuery abrufen
Überprüfen Sie dies :
quelle