Itérer à travers les options <select>

202

J'ai un <select>élément en HTML. Cet élément représente une liste déroulante. J'essaie de comprendre comment parcourir les options de l' <select>élément via JQuery.

Comment utiliser JQuery pour afficher la valeur et le texte de chaque option dans un <select>élément? Je veux juste les afficher dans une alert()boîte.

user208662
la source

Réponses:

346
$("#selectId > option").each(function() {
    alert(this.text + ' ' + this.value);
});
karim79
la source
2
C'est bizarre, cela devrait fonctionner, mais pour une raison quelconque, cela ne me
convient
14
Ce devrait être $ (this) .val () au lieu de this.value comme l'a dit l'informatique.
Thihara
Seule la réponse d'IT ppl a fonctionné pour moi (et ce n'était pas seulement le "ceci")
user984003
1
Ce devrait être $ (this) .val () et $ (this) .text () pour obtenir respectivement la valeur et le texte
Amit Bhagat
5
@AmitKB - Il est préférable d'utiliser la méthode native DOM pour extraire le texte et les valeurs. 1) Il est plus court 2) évite de construire deux nouveaux objets jQuery.
karim79
79

Cela a fonctionné pour moi

$(function() {
    $("#select option").each(function(i){
        alert($(this).text() + " : " + $(this).val());
    });
});
IT ppl
la source
5
Si vous stockiez $(this)dans une variable, ce serait plus efficace, c'estvar $this = $(this); $this.text(); $this.val();...etc.
Liam
25

peut également utiliser paramétré chacun avec index et l'élément.

$('#selectIntegrationConf').find('option').each(function(index,element){
 console.log(index);
 console.log(element.value);
 console.log(element.text);
 });

// cela fonctionnera aussi

$('#selectIntegrationConf option').each(function(index,element){
 console.log(index);
 console.log(element.value);
 console.log(element.text);
 });
Arun Pratap Singh
la source
17

Et la manière requise, non jquery, pour les followers, car google semble envoyer tout le monde ici:

  var select = document.getElementById("select_id");
  for (var i = 0; i < select.length; i++){
    var option = select.options[i];
    // now have option.text, option.value
  }
rogerdpack
la source
4

Vous pouvez essayer comme ça aussi.

Votre HTMLcode

<select id="mySelectionBox">
    <option value="hello">Foo</option>
    <option value="hello1">Foo1</option>
    <option value="hello2">Foo2</option>
    <option value="hello3">Foo3</option>
</select>

Vous JQuerycodez

$("#mySelectionBox option").each(function() {
    alert(this.text + ' ' + this.value);
});

OU

var select =  $('#mySelectionBox')[0];

  for (var i = 0; i < select.length; i++){
    var option = select.options[i];
    alert (option.text + ' ' + option.value);
  }
Dulith De Costa
la source
1
$.each($("#MySelect option"), function(){
                    alert($(this).text() + " - " + $(this).val());                    
                });
Yojana Ambavkar
la source
1

Si vous ne voulez pas Jquery (et pouvez utiliser ES6)

for (const option of document.getElementById('mySelect')) {
  console.log(option);
}
Jeyko Caicedo
la source
Seules les réponses codées sont déconseillées. Veuillez ajouter des explications sur la façon dont cela résout le problème ou en quoi cela diffère des réponses existantes. De l'avis
Nick
1

Une autre variation sur les réponses déjà proposées sans jQuery.

Object.values(document.getElementById('mySelect').options).forEach(option => alert(option))
zzart
la source