[jquery] 각 루프에서 jQuery를 벗어나는 방법

jQuery each루프에서 벗어나려면 어떻게해야 합니까?

나는 시도했다 :

 return false;

루프에서 그러나 이것은 작동하지 않았습니다. 어떤 아이디어?



답변

에 또는 루프, 당신은 반환해야 루프 콜백.break$.each$(selector).eachfalse

리턴 true하면 다음 반복 으로 건너 뜁니다 ( continue일반 루프의 경우 와 동일) .

$.each(array, function(key, value) {
    if(value === "foo") {
        return false; // breaks
    }
});

// or

$(selector).each(function() {
  if (condition) {
    return false;
  }
});


답변

문서에 따르면 return false;작업을 수행해야합니다.

콜백 함수가 false를 반환하도록하여 $ .each () 루프 [..]를 중단 할 수 있습니다.

콜백에서 false를 반환하십시오.

function callback(indexInArray, valueOfElement) {
  var booleanKeepGoing;

  this; // == valueOfElement (casted to Object)

  return booleanKeepGoing; // optional, unless false 
                           // and want to stop looping
}

BTW continue는 다음과 같이 작동합니다.

거짓이 아닌 리턴은 for 루프의 continue 문과 동일합니다. 다음 반복으로 즉시 건너 뜁니다.


답변

허용 된 답변이 정확하지 않기 때문에이 질문에 대한 답변을 위해 바이올린을 만들었습니다.이 질문에 대해 Google에서 반환 된 첫 번째 StackOverflow 스레드입니다.

$ .each에서 벗어나려면 사용해야합니다. return false;

그것을 증명하는 바이올린은 다음과 같습니다.

http://jsfiddle.net/9XqRy/


답변

루프를 깨는 조건을 만났지만 .each () 함수 이후의 코드는 여전히 실행되는 상황을 만났습니다. 그런 다음 .each () 함수 다음에 플래그를 즉시 확인하여 플래그를 “true”로 설정하여 뒤 따르는 코드가 실행되지 않았는지 확인합니다.

$('.groupName').each(function() {
    if($(this).text() == groupname){
        alert('This group already exists');
        breakOut = true;
        return false;
    }
});
if(breakOut) {
    breakOut = false;
    return false;
} 


답변

“각”은 콜백 기능을 사용합니다. 콜백 기능은 호출 기능에 관계없이 실행되므로 콜백 기능에서 호출 기능으로 돌아갈 수 없습니다.

특정 조건에 따라 루프 실행을 중지하고 동일한 기능을 유지해야하는 경우 for 루프를 사용하십시오.


답변

나는 그것의 오래된 질문을 알고 있지만 대답을 보지 못했습니다.

간단한 두 가지 예를 들어 설명하고 싶습니다.

1. 예제 :
이 경우 간단한 반복이 있고 세 개를 찾을 수 있으면 return true로 나누고 싶습니다.

function canFindThree() {
    for(var i = 0; i < 5; i++) {
        if(i === 3) {
           return true;
        }
    }
}

이 함수를 호출하면 단순히 true를 반환합니다.

2. 예제이
경우 익명 함수를 매개 변수 로 사용하는 jquery의 각 함수 를 사용하여 반복하려고합니다 .

function canFindThree() {

    var result = false;

    $.each([1, 2, 3, 4, 5], function(key, value) {
        if(value === 3) {
            result = true;
            return false; //This will only exit the anonymous function and stop the iteration immediatelly.
        }
    });

    return result; //This will exit the function with return true;
}


답변