Lặp lại thông qua các tùy chọn <select>


202

Tôi có một <select>yếu tố trong HTML. Yếu tố này đại diện cho một danh sách thả xuống. Tôi đang cố gắng hiểu cách lặp qua các tùy chọn trong<select> phần tử thông qua JQuery.

Làm cách nào để sử dụng JQuery để hiển thị giá trị và văn bản của từng tùy chọn trong một <select>phần tử? Tôi chỉ muốn hiển thị chúng trong một alert()hộp.

Câu trả lời:


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

2
Thật kỳ lạ, điều này sẽ hoạt động nhưng vì một số lý do, nó không phù hợp với tôi ... :(
SublymeRick

14
Nó phải là $ (this) .val () thay vì this.value như IT ppl đã nói.
Thihara

Chỉ có câu trả lời của ppl IT làm việc cho tôi (và đó không chỉ là "cái này")
user984003

1
Nó phải là $ (this) .val () và $ (this) .text () để nhận giá trị và văn bản tương ứng
Amit Bhagat

5
@AmitKB - Tốt hơn là sử dụng phương thức DOM gốc để trích xuất văn bản và giá trị. 1) Nó ngắn hơn 2) tránh xây dựng hai đối tượng jQuery mới.
karim79

79

Điều này làm việc cho tôi

$(function() {
    $("#select option").each(function(i){
        alert($(this).text() + " : " + $(this).val());
    });
});

5
Nếu bạn lưu trữ $(this)trong một biến, nó sẽ hiệu quả hơn, tức làvar $this = $(this); $this.text(); $this.val();...etc.
Liam

25

cũng có thể sử dụng từng tham số với chỉ số và phần tử.

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

// cái này cũng sẽ hoạt động

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

17

Và cách cần thiết, không gây cười, cho người theo dõi, vì google dường như gửi tất cả mọi người ở đây:

  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

Bạn có thể thử như thế này quá.

HTMLMã của bạn

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

Bạn JQuery

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

HOẶC LÀ

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

Nếu bạn không muốn Jquery (và có thể sử dụng ES6)

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

Mã chỉ trả lời được khuyến khích. Vui lòng thêm một số giải thích về cách giải quyết vấn đề này hoặc cách giải quyết vấn đề này khác với các câu trả lời hiện có. Từ đánh giá
Nick

1

Một biến thể khác về các câu trả lời đã được đề xuất mà không có jQuery.

Object.values(document.getElementById('mySelect').options).forEach(option => alert(option))
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.