Đếm số lượng thẻ tùy chọn trong một thẻ chọn trong jQuery


159

Làm cách nào để tôi đếm số <option>s trong <select>phần tử DOM bằng jQuery?

<select data-attr="dropdown" id="input1">
  <option value="Male" id="Male">Male</option>
  <option value="Female" id="Female">Female</option>
</select>

Tôi muốn tìm số lượng <option>thẻ trong <select>phần tử DOM, vì tôi muốn mở bảng cài đặt với số trường nhập đó với giá trị tùy chọn tương ứng từ hộp thả xuống trong đó và để thay đổi lại trong phần xem trước bảng điều khiển.

Hộp thả xuống ở trên nằm trong bảng xem trước của tôi được tạo bởi jQuery.

Câu trả lời:



51

Giải pháp W3C:

var len = document.getElementById("input1").length;

5
Một biến thể của phương pháp này với javascript hiện đại sẽ là var len = document.querySelector("#input1").length;
Jacob Nelson

22

Bạn có thể sử dụng một trong hai chiều dài bất động sản và lengthlà Biến tốt hơn sau đó size.

$('#input1 option').length;

HOẶC bạn có thể sử dụng chức năng kích thước như

$('#input1 option').size(); 

Bản giới thiệu


2
Điều này không cung cấp bất cứ điều gì câu trả lời từ năm 2009 cũng không cung cấp.
TylerH

18

Câu hỏi của bạn hơi khó hiểu, nhưng giả sử bạn muốn hiển thị số lượng tùy chọn trong một bảng điều khiển:

<div id="preview"></div>

$(function() {
  $("#preview").text($("#input1 option").length + " items");
});

Không chắc chắn tôi hiểu phần còn lại của câu hỏi của bạn.


14

Trong hộp tùy chọn nhiều lựa chọn, bạn có thể sử dụng $('#input1 :selected').length;để lấy số lượng tùy chọn đã chọn. Điều này có thể hữu ích để vô hiệu hóa các nút nếu một số tùy chọn tối thiểu nhất định không được đáp ứng.

function refreshButtons () {
    if ($('#input :selected').length == 0)
    {
        $('#submit').attr ('disabled', 'disabled');
    }
    else
    {
        $('#submit').removeAttr ('disabled');
    }
}

Tôi thấy điều này hoạt động sau khi gỡ bỏ $('#input1 :selected').length; tài liệu hỗ trợ niềng răng api.jquery.com/length
Leonard Kakande

6

Ok, tôi đã có một vài vấn đề vì tôi đã ở trong

$('.my-dropdown').live('click', function(){  
});

Tôi đã có nhiều trong trang của mình, đó là lý do tại sao tôi sử dụng một lớp.

Việc thả xuống của tôi được điền tự động bởi một yêu cầu ajax khi tôi nhấp vào nó, vì vậy tôi chỉ có phần tử $ (cái này)

vì thế...

Tôi phải làm:

$('.my-dropdown').live('click', function(){
  total_tems = $(this).find('option').length;
});

6

Hình thức tốt nhất là đây

$('#example option').length

Giải pháp chỉ có mã (giá trị thấp) này đã được Sadikhasan cung cấp 4 năm trước đó. Việc sử dụng lengthđã được đăng bởi Karim79 9 năm trước. Câu trả lời này có thể được thanh lọc một cách an toàn từ trang vì nó hoàn toàn dư thừa.
mickmackusa

-1

Một cách tiếp cận khác có thể hữu ích.

$('#select-id').find('option').length

1
Câu hỏi không yêu cầu số lượng chỉ được chọn <option> .
dùng4642212
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.