2010-07-27 33 views
27

Tôi đang sử dụng jquery's .each() để lặp qua một nhóm các li. Tôi cần tổng cộng tất cả các li của phù hợp. Là cách duy nhất để tạo ra một biến đếm bên ngoài .each() và tăng này bên trong .each()? Nó không có vẻ rất tao nhã.nhận được tổng số jquery .each()

var count; 
$('#accordion li').each(function() { 
    ++count; 
}); 
+0

Cảm ơn bạn rất nhiều. Chúc một ngày tốt lành. –

Trả lời

46

Hai lựa chọn:

$('#accordion li').size(); // the jQuery way 
$('#accordion li').length; // the Javascript way, which jQuery uses 

Kể từ jQuery gọi chiều dài dưới mui xe, nó nhanh hơn để sử dụng thay vì kích thước() gọi.

+4

Tài liệu jQuery thực sự khuyên bạn nên sử dụng 'length', không phải' size() ': xem nhận xét tại http://api.jquery.com/size/ – tvanfosson

+2

+1 -' length' ftw –

+0

Vâng tôi không thích sự lặp lại của bộ chọn jquery ... một lần cho mỗi() và sau đó một lần nữa cho kích thước(). Tôi vừa gán $ ('# accordion li') cho một var bây giờ và gọi nó hai lần. –

7
$('#accordion li').length; 
6

Vâng, tôi vừa nhìn thấy câu hỏi này và bạn đã chấp nhận câu trả lời, nhưng tôi sẽ để lại một câu hỏi.

Điểm của câu hỏi dường như quan tâm đến việc tăng bộ đếm.

Thực tế là phương pháp .each() của jQuery sẽ giải quyết vấn đề này cho bạn. Thông số đầu tiên cho .each() bộ đếm gia tăng, do đó bạn không cần tự làm điều đó.

$('#accordian li').each(function(index) { 
     // index has the count of the current iteration 
    console.log(index); 
}); 

Như bạn có thể thấy, có một giải pháp thanh lịch được tích hợp sẵn cho bạn.

+1

Xin chào, Cảm ơn bạn đã trả lời. Tôi thực sự cần tổng số. Tôi biết chỉ số mang lại cho tôi truy cập tăng nhưng tôi cần tổng số của tất cả các mục danh sách phù hợp. –

0

Ok vì vậy cách tốt nhất để làm điều này là như sau: trước hết là lập bản đồ bộ bọc cho một biến, do đó bạn không bao giờ phải làm việc tra cứu những lời sáo rỗng dom một lần nữa:

var $myListItems = $('#accordian li'); 

Lưu ý: sở thích của tôi là đặt $ vào đầu của bất kỳ vars được một jQuery quấn thiết lập, do đó $ myListItems như trái ngược với myListItems

Sau đó thiết lập một var bên ngoài mỗi hàm có chiều dài của bộ bọc:

var myLength = $myListItems.length; 

Lưu ý việc thiếu $ ở đây vì var không phải là đối tượng jQuery.

Bây giờ hãy chạy từng hàm với một biến cho chỉ mục.

$myListItems.each(function(index){ 
    // myLength has the length 
    // index has the current, 0 based index. 
}); 

Bây giờ bạn có những gì bạn đã yêu cầu trong OP chỉ với một cái nhìn lên và vì vậy cần phải mò mẫm trong mỗi chức năng với việc phải biết nội dung của quấn thiết lập chỉ để biết chiều dài của nó . vẻ đẹp của điều này trên một truy cập là trên mỗi lần lặp của mỗi bạn đã biết chiều dài.

+0

đồng ý chúng tôi không cần tra cứu số liệu thống kê hai lần để có được kết quả tương tự – yeahdixon

Các vấn đề liên quan