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.

Réponses:


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

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());
    });
});

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);
 });

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
  }

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);
  }

1
$.each($("#MySelect option"), function(){
                    alert($(this).text() + " - " + $(this).val());                    
                });

1

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

for (const option of document.getElementById('mySelect')) {
  console.log(option);
}

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))
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.