2010-07-27 3 views
27

저는 li의 그룹을 반복하기 위해 jquery의 .each()를 사용하고 있습니다. 나는 모든 리가 합쳐진 총이 필요해. .each() 외부에서 count 변수를 만들고 .each() 내부에서이 변수를 증가시키는 유일한 방법은 무엇입니까? 그것은 매우 우아 해 보이지 않습니다.총 jquery의 .each()

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

대단히 감사합니다. 너는 좋은 하루 보내. –

답변

46

두 가지 옵션 :

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

JQuery와 후드의 길이를 호출하기 때문에, 대신 크기() 호출의를 사용하는 것이 더 빠릅니다.

+4

jQuery 워드 프로세서는 실제로'size()'가 아닌'length'을 사용할 것을 권장합니다 : http://api.jquery.com/size/에서 코멘트보기 – tvanfosson

+2

+1 -'length' ftw –

+0

예 jquery selector의 반복은 각()에 대해 한 번 수행 한 다음 size()에 대해 다시 수행합니다. 방금 var에 $ ('# accordion li')를 지정하고 두 번 호출했습니다. –

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

음, 방금이 질문을 보았습니다. 이미 답변을 수락했으나 어쨌든 하나를 남겨두고 갈 것입니다.

질문의 요점은 카운터를 증가시키는 것과 관련이있는 것 같습니다.

사실 jQuery의 .each() 메서드가이 문제를 처리합니다. .each()의 첫 번째 매개 변수는 증가 카운터 인이므로 직접 처리 할 필요가 없습니다.

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

위에서 볼 수 있듯이 멋진 솔루션이 내장되어 있습니다.

+1

안녕하세요, 답장을 보내 주셔서 감사합니다. 실제로 총계가 필요합니다. 인덱스가 증가 카운터를 제공하지만 모든 일치하는 목록 항목이 필요합니다. –

0

확인을 다음과 같이이 작업을 수행하는 가장 좋은 방법은 그래서 :

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

참고 : 내 취향가 당신이 다시 지글 지글의 DOM 조회를 할 필요가 없습니다 그래서 먼저 변수에 포장 세트를 매핑

var myLength = $myListItems.length; 
0 : 그런 다음 포장 세트의 길이가 각각의 기능을 외부의 VAR을 설정

myListItems에 반대 따라서 $, JQuery와 설정 싸여있는 바르의 시작 부분에 myListItems을 $를 넣어

var가 jQuery 객체가 아니므로 여기에 $가 없음을 유의하십시오.

이제 각 변수를 색인과 함께 실행하십시오.

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

당신은 이제 하나의 모양이 위로 영업에 요구 한 일이 있고, 그래서 그냥 그것의 길이를 알 수 있도록 설정 싸서의 내용을 알 필요와 각 기능에 펌블 필요 . 이 카운터의 아름다움은 각각의 반복마다 길이를 이미 알고 있다는 것입니다.

+0

동의 우리는 같은 결과를 얻으려면 dom을 두 번 찾지 않아도됩니다. – yeahdixon