2011-01-21 2 views
14

각각을 사용하여 반복 할 요소 컬렉션이 있지만 외부 for 루프 내부에서 반복합니다. 내가 원하는 것을 각각 발견 할 때 나는 깨어나 거짓으로 돌아와 돌발한다. 다음에 외부 루프가 실행될 때, 내가 리턴 한 요소 다음의 요소에서 각각 시작하고 싶습니다. 일반적인 코드 예제 :jQuery : 0 이외의 인덱스에서 시작하는 각 사용 방법

var nextIndex = 0; 

for (var j=1; j <= someCount; j++) { 
    // do outside loop stuff 

    $('#someElemID').find('.someClass').each(function(index) { 
     if (/*this is right one*/) { 
      // do something 
      // next index should get passed to each function next loop... somehow? 
      nextIndex = index + 1; 
      return false; 
     } 
    }); 
} 

나는 for 루프로 전환에 대한 생각,하지만 난 .find('.someClass')의 반환에 액세스하는 방법에 혼동되었다. 아마도 그것은 별도의 질문입니다 ...

이것은 분명한 것입니까?

답변

17

사용 http://api.jquery.com/slice/

$('#someElemID').find('.someClass').slice(nextIndex).each(... 

slice()이 BTW 요소가 정적 경우, 캐싱 고려 : 상당히 성능을 향상해야

var $elms = $('.someClass', '#someElemID'), 
    nextIndex = 0; 

for (var j = 1; j <= someCount; j++) { 
    // do outside loop stuff 

    $elms.slice(nextIndex).each(function(index) { 
     if (/*this is right one*/) { 
      nextIndex = index + 1; 
      return false; 
     } 
    }); 
} 

. 당신이가는 빈도

$('#someElemID .someClass:gt(' + storedIndex + ')').each(function() { 
    ... 
+0

이, 약간의 수정과 :

nameThisFunction = function(s) { var self = this; this.selector = $(s); return function(searchFor) { self.selector.each(function(i) { if (/*Do your comparision to searchFor*/) { // Do what you want self.selector.splice(i, 1); return false; } }); } }; var thisQueue = new nameThisFunction('#someElemId .someClass'); thisQueue('Search for something here'); 

여기 예를 들어 바이올린입니다! 감사. –

6

또 다른 가능성은 당신이 직접이 같은 저장된 인덱스 이후에 발생하는 요소를 선택합니다 gt selector을 사용할 수, 인덱스가 unincremented 저장하는 것입니다 이걸 또는 당신이 필요로하는 몇 가지 다른 바리 에이션을 실행하지만, 나는 nextValue을 우주에서 떠 다니는 것을 좋아하지 않는다. 이렇게하면 여러 가지 '대기열'을 만들 수있는 가능성을 제공 할 수 있습니다. 해당 항목을 한 번만 찾고 싶을 때처럼 들리지만 다시 한 번 검색하면 안됩니다. 이 작업을 수행해야하며 선택기를 캐싱하여 작동합니다. 호출간에 DOM을 변경하는 경우 다른 답변 중 하나를 사용하십시오. 내 기존 코드에 최소한의 변경이 필요 정확히 무엇을했다, http://jsfiddle.net/robert/RCfeJ/

+2

gt 선택자를 가리키는 +1. 당신이 그런 식으로 사용할 수 있다는 것을 깨닫지 못했습니다. 감사. –

3

나도 몰라 :

+1

+1 당신이 내게 또 다른 방법을 보여 주었기 때문에 이것을 할 생각이 없었습니다. 나는이 것을 좀 더 숙고해야한다. 배울 것이 많다! 감사. –

관련 문제