Je ne sais pas comment obtenir un index d'une option sélectionnée à partir d'un <select>
élément HTML .
Sur cette page, deux méthodes sont décrites. Cependant, les deux reviennent toujours -1
. Voici mon code jQuery:
$(document).ready(function(){
$("#dropDownMenuKategorie").change(function(){
alert($("#dropDownMenuKategorie option:selected").index());
alert($("select[name='dropDownMenuKategorie'] option:selected").index());
});
});
et en 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>
(...)
Pourquoi ce comportement? Y a-t-il une chance que le select
ne soit pas «prêt» au moment d'attribuer sa change()
méthode? De plus, passer .index()
à .val()
revient à la bonne valeur, c'est donc ce qui me trouble encore plus.
[name=]
utilisé lorsque select aid
dessus. Le[0].selectedIndex
etoption:selected
-answers ci - dessous sont tous les deux ok.Réponses:
Les premières méthodes semblent fonctionner dans les navigateurs que j'ai testés, mais les balises d'option ne correspondent pas vraiment aux éléments réels de tous les navigateurs, le résultat peut donc varier.
Utilisez simplement la
selectedIndex
propriété de l'élément DOM:Mettre à jour:
Depuis la version 1.6 jQuery a la
prop
méthode qui peut être utilisée pour lire les propriétés:la source
[0]
?selectedIndex
propriété. L'ajout[0]
convertit l'objet jquery en un objet javascript qui a laselectedIndex
propriété. Cet exemple ne fonctionnera pas sans[0]
selectedIndex
est une propriété, et il n'y a pas d'attribut correspondant. Laattr
méthode peut fonctionner pour lire la propriété dans les versions antérieures à 1.6, mais pas à partir de cette version.selectedIndex
ne démarre pas à 0 avec la première option?selectedIndex
propriété est basée sur zéro. J'ai vérifié la documentation et même essayé moi-même pour être vraiment sûr à 100% de cela.Bon moyen de résoudre cela de manière Jquery
la source
[0]
réponse préférée de OP et en tant que développeur python, je peux vraiment apprécier la lisibilité de cette réponse.J'ai une solution légèrement différente basée sur la réponse de user167517. Dans ma fonction, j'utilise une variable pour l'identifiant de la boîte de sélection que je cible.
L'index est renvoyé avec:
la source
Vous pouvez utiliser la
.prop(propertyName)
fonction pour obtenir une propriété du premier élément de l'objet jQuery.Cela garde votre code dans le domaine jQuery et évite également l'autre option d'utiliser un sélecteur pour trouver l'option sélectionnée. Vous pouvez ensuite le restaurer en utilisant la surcharge:
la source
essaye ça
la source
selectedIndex est une propriété de sélection JavaScript. Pour jQuery, vous pouvez utiliser ce code:
la source
Vous pouvez obtenir l'index de la boîte de sélection en utilisant: la méthode .prop () de JQuery
Vérifie ça :
la source