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

Как мне вырвать из jQuery each цикл?

Я пытался:

 return false;

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

ОБНОВЛЕНИЕ Несмотря на то, что неясно, какова была первоначальная область вопроса, пожалуйста, имейте в виду, что выбранный ответ охватывает только функцию $.each() но не функцию $().each.

Ответ 1

Чтобы break $.each или $(selector).each, вы должны вернуть false в обратном $(selector).each цикла.

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

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

// or

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

Ответ 2

В соответствии с документацией return false; должно выполняться задание.

Мы можем разбить цикл $.each() [..], выполнив функцию обратного вызова return false.

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

function callback(indexInArray, valueOfElement) {
  var booleanKeepGoing;

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

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

BTW, continue работает следующим образом:

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

Ответ 3

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

Чтобы выйти из $.each, вы должны использовать return false;

Вот скрижали, доказывающие это:

http://jsfiddle.net/9XqRy/

Ответ 4

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

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

Ответ 5

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

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

Ответ 6

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

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

1. Пример: в этом случае у нас есть простая итерация, и мы хотим порвать с возвращением true, если мы можем найти три.

function canFindThree() {
    for(var i = 0; i < 5; i++) {
        if(i === 3) {
           return 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;
}