Как вырваться из jQuery каждого цикла

как мне вырваться из jQuery each петли?

Я пробовал:

 return false;

в цикле, но это не работало. Есть идеи?

обновление хотя неясно, какова была первоначальная область вопроса, пожалуйста, будьте осторожны, что выбранный ответ охватывает только

6 ответов


до break a $.each loop, вы должны вернуться false в цикле обратного вызова.

возвращение true переходит к следующей итерации, эквивалентной continue в нормальном цикле.

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

вырваться из $().each петля покрыта как разбить / выйти из функции each () в JQuery?


согласно документации return false; должен выполнить работу.

мы можем сломать $.каждый цикл.[ .] путем создания функции обратного вызова возвращать false.

Return false в обратном вызове:

function callback(indexInArray, valueOfElement) {
  var booleanKeepGoing;

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

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

кстати, continue работает так:

возврат non-false такой же, как оператор continue в цикле for; он сразу же перейдет к следующей итерации.


Я создал скрипку для ответа на этот вопрос, потому что принятый ответ неверен, плюс это первый поток StackOverflow, возвращенный из Google по этому вопросу.

чтобы вырваться из $.каждый вы должны использовать return false;

вот Скрипка, доказывающая это:

http://jsfiddle.net/9XqRy/


я столкнулся с ситуацией, когда я встретил условие, которое сломало цикл, однако код после .каждая функция () все еще выполняется. Затем я установил флаг в " true "с немедленной проверкой флага после.каждая функция () для обеспечения того, чтобы следующий код не был выполнен.

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

"друг" использует функцию обратного вызова. Функция обратного вызова выполняется независимо от вызывающей функции, поэтому возврат к вызывающей функции из функции обратного вызова невозможен.

используйте для цикла, Если вам нужно остановить выполнение цикла на основе некоторого условия и остаться в той же функции.


Я знаю его довольно старый вопрос, но я не видел никакого ответа, который проясняет, почему и когда его можно разорвать с возвращением.

Я хотел бы объяснить это с 2 простых примера:

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;
}