Iteruj za pomocą opcji <select>

202

Mam <select>element w HTML. Ten element reprezentuje listę rozwijaną. Próbuję zrozumieć, jak iterować opcje w <select>elemencie za pomocą JQuery.

Jak używać JQuery do wyświetlania wartości i tekstu każdej opcji w <select>elemencie? Chcę tylko wyświetlić je w alert()pudełku.

użytkownik208662
źródło

Odpowiedzi:

346
$("#selectId > option").each(function() {
    alert(this.text + ' ' + this.value);
});
karim79
źródło
2
To dziwne, to powinno działać, ale z jakiegoś powodu nie działa dla mnie ... :(
SublymeRick
14
Powinien to być $ (this) .val () zamiast this.value, jak powiedział IT ppl.
Thihara
Tylko odpowiedź IT ppl działała dla mnie (i nie było to tylko „to”)
user984003,
1
Powinien to być $ (this) .val () i $ (this) .text (), aby uzyskać odpowiednio wartość i tekst
Amit Bhagat
5
@AmitKB - Lepiej jest użyć rodzimej metody DOM do wyodrębnienia tekstu i wartości. 1) Jest krótszy 2) unika konstruowania dwóch nowych obiektów jQuery.
karim79
79

To zadziałało dla mnie

$(function() {
    $("#select option").each(function(i){
        alert($(this).text() + " : " + $(this).val());
    });
});
IT ppl
źródło
5
Jeśli zapisałeś $(this)w zmiennej, byłoby to bardziej wydajne, tj.var $this = $(this); $this.text(); $this.val();...etc.
Liam
25

można również użyć sparametryzowanych każdego z indeksem i elementem.

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

// to też zadziała

$('#selectIntegrationConf option').each(function(index,element){
 console.log(index);
 console.log(element.value);
 console.log(element.text);
 });
Arun Pratap Singh
źródło
17

I wymagany, nie-jquery sposób, dla obserwujących, ponieważ Google wydaje się wysyłać tutaj wszystkich:

  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
źródło
4

Możesz też spróbować w ten sposób.

Twój HTMLkod

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

Ty JQuerykodujesz

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

LUB

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
źródło
1
$.each($("#MySelect option"), function(){
                    alert($(this).text() + " - " + $(this).val());                    
                });
Yojana Ambavkar
źródło
1

Jeśli nie chcesz Jquery (i możesz używać ES6)

for (const option of document.getElementById('mySelect')) {
  console.log(option);
}
Jeyko Caicedo
źródło
Odpowiedzi tylko na kod są odradzane. Dodaj wyjaśnienie, w jaki sposób rozwiązuje problem lub jak różni się on od istniejących odpowiedzi. Z recenzji
Nick
1

Kolejna odmiana już zaproponowanych odpowiedzi bez jQuery.

Object.values(document.getElementById('mySelect').options).forEach(option => alert(option))
zzart
źródło