6
votes

Obtenir efficacement l'option sélectionnée dans une liste déroulante (élément de sélection XHTML)

fond

Il existe une grande liste d'options - des dizaines - dans une liste déroulante à l'aide d'un élément de sélection XHTML.

Utilisation de JavaScript, j'ai besoin de récupérer l'option sélectionnée.

problème

Actuellement, j'utilise actuellement jQuery : Sélecteur CSS sélectionné et fonctionne comme prévu, mais cette approche n'est pas efficace car elle prend un certain temps pour trouver l'option sélectionnée - évidemment, cela dépend de la puissance de la CPU. de la machine client, mais dans un noyau d'Intel 2 décent avec 4 Go de RAM, il y a une pénalité de performance excessif.

problème

Utilisation de jQuery ou de JavaScript et DOM de la plaine, j'ai besoin d'obtenir une option sélectionnée de cet élément de sélection XHTML de manière efficace.

Merci d'avance.


0 commentaires

4 Réponses :


2
votes

Utilisez le "Vanilla" DOM ​​ sélectionnée code> propriété du .

var $select = $('#mySelect'),
    si = $select.get(0).selectedIndex,
    $selectedOpt = $select.children('option:eq(' + si + ')');


1 commentaires

Je ne sais pas pourquoi je n'ai pas pensé à utiliser sélectionnée . Je vais essayer cela et votre réponse sera probablement la bonne. Merci.



19
votes

devrait être aussi simple que: xxx

voir htmlselectelement [MDN] .

Mise à jour:

dans les nouveaux navigateurs qui soutiennent les méthodes suivantes (elles sont Partie de HTML5 ), vous pouvez également utiliser: xxx


5 commentaires

N.b. Sélectionnez IS PAS JQUERY dans ce cas.


Bien sûr, et c'est pour tout: Peut-être que je suis endormi, parce que c'est stupide la solution pour cela et je savais évidemment que haha, de toute façon, merci.


@ MATÍAS: :) Pas de soucis, cela nous arrive à tous, je suppose: D.


Merci encore, de toute façon je ris parce que j'ai posé une question aussi stupide ...! C'est juste parce que je pensais dans les approches "jQuery seulement" ...


Si vous avez juste besoin de la valeur, utilisez var selectedValue = select.value;



3
votes
var dropDown = document.getElementById("yourId");
dropDown.options[dropDown.selectedIndex];

0 commentaires

1
votes
<select id="sel">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
</select>

$("#sel").val()

2 commentaires

Obtenir la valeur n'est pas la même chose que d'obtenir l'élément. Ceci pourrait ce que l'OP veut, mais je suppose qu'il connaît val .


Il essaie d'obtenir l'élément non de la valeur de l'index sélectionné.