Как вырваться из 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;
}