2009년 6월 16일 화요일

[jQuery] each 메소드 사용시 break, continue 사용

jQuery.each ( callback )

 

jQuery에서 for, while 문과 비슷한 역할을 하는 each 메소드 사용 시

break, continue와 같은 프로세스를 수행해야 할 때가 있다.

 

그럴 때 return true;continue와 같은 역할을, return false; break와 같은

역할을 수행한다.

 

예제 >>

 

$('#loop').each ( function() {

  if ( i==0 ) return true; // continue;

  else return false; // break;

} );

 

출처 : 짱프로그래머 카페

댓글 6개:

  1. api( http://api.jquery.com/jQuery.each/ ) 보니까 "We can break the $.each() loop at a particular iteration by making the callback function return false. Returning non-false is the same as a continue statement in a for loop; it will skip immediately to the next iteration." 라고, false 아닌 걸 리턴하면 continue와 같은 역할이 된다고 하네요.
    여튼 간에 좋은 정보 감사합니다. 덕분에 새로 알았어요 ^^

    답글삭제
  2. 고민하던 부분인데 도움이 되었습니다. 일반 javascript에서는 continue가 먹히던데 jqury는 continue가 안되고 return으로 지정해야되는 원인도 알수 있을까요?

    답글삭제
    답글
    1. jquery는 javascript 언어를 사용한 라이브러리입니다. 따라서 jquery를 이용한 each 구문은 jquery 라이브러리에 구현된 function에 따라 움직이게 됩니다. 소스를 살펴보지 않아서 모르겠지만 단순 반복문 하나로 동작하지 않을 것이므로, continue나 break를 쓰게되면 each에서 의도하지 않는 상황으로 전개될 것입니다. 따라서 jquery에서 return을 이용하여 continue, break를 처리할 수 있도록 별도로 구현하였으므로 그렇게 지정해야 합니다.

      삭제
    2. 추측하기로는 jquery의 each문 스펙과 사용법을 보면 each문 안에 callback 함수가 들어갑니다. 따라서 each안에서 코딩되는 로직은 반복문이 아닌 함수 로직으로 취급받는 겁니다. 그래서 반복문을 건너 뛰거나 중단할 때 return을 통해서 callback 함수를 종료하는 것 같습니다.

      삭제