<select id="sel">
<option value="123" selected="selected">text1</option>
<option value="44">text2</option>
<option value="882">text3</option>
...
</select>
Comment obtenir l'index de l'option sélectionnée avec jQuery? Peut-être .index(subject)
, mais toutes les possibilités testées, n'ont pas fonctionné ...
P.S. Index: value = "123" => 0, value = "44" => 1, ...
Merci
Cela va le faire:
$("#sel").attr("selectedIndex")
Seule la deuxième réponse de Bob est correcte:
$("#sel")[0].selectedIndex
Travaux: http://jsfiddle.net/b9chris/wxeVN/1/
L'utilisation de .attr()
ne fonctionne que si l'utilisateur (ou la restauration DOM du navigateur) n'a pas modifié l'option sélectionnée depuis le chargement de la page: http://jsfiddle.net/b9chris/wxeVN/
Vous pouvez l'implémenter en tant qu'extension jQuery et obtenir un peu plus d'informations dans le processus:
(function($) {
$.fn.selectedOption = function() {
var sel = this[0];
return sel.options[sel.selectedIndex];
};
})(jQuery)
$('button').click(function() {
$('#output').text('selected index: ' + $('select').selectedOption().index);
});
http://jsfiddle.net/b9chris/wxeVN/102/
Ce qui est retourné par .selectedOption()
correspond à la balise d’option réelle. Vous pouvez donc accéder à .index
, .value
et .text
- un peu plus pratique que l’index utilisé habituellement.
Au moment où j'écris ces lignes, deux des principales réponses (y compris la réponse acceptée) sont incorrectes bien qu'elles aient été signalées il y a près de cinq ans. attr("selectedIndex")
ne fait rien car selectedIndex
est une propriété de l'élément DOM actuel, pas un attribut HTML. Vous devez utiliser prop
:
$(this).prop('selectedIndex')
Démo interactive comparant ceci à la version incorrecte: http://jsfiddle.net/uvwkD/
$("#sel").attr("selectedIndex")
ou
$("#sel")[0] //to get the DOM element
$("#sel")[0].selectedIndex
Vous pouvez obtenir l'index de l'élément dans ce cas en vérifiant le nombre d'éléments frères que l'élément sélectionné a devant lui:
$('#sel option:selected').prevAll().length;
Vous pouvez réellement le faire sans jQuery: var sel = document.getElementById( 'sel' );
var index = sel.selectedIndex;
Utilisez la fonction d'index standard de jquery comme dans cet exemple de code
$("#sel option:selected").index()
Le titre ne correspond pas vraiment à la question ...
Comment obtenir l'index de select-> option tag
option.index // javascript
$(option).prop('index') // jquery
index of selected select-> option tag:
document.getElementById('sel').selectedIndex // javascript