如何打破jQuery的每个循环?

如何打破jQueryeach循环?

我试过:

 return false;

在循环中,但这没有工作。任何想法?


更新9/5/2020

我把return false;放在了错误的地方。当我把它放在循环中时,一切都正常了。

685290 次浏览

break$.each$(selector).each循环,您必须在循环回调中返回false

返回true跳到下一次迭代,相当于普通循环中的continue

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

根据留档#0应该做的工作。

我们可以通过创建回调函数来打破$. each()循环[…]返回false。

在回调中返回false:

function callback(indexInArray, valueOfElement) {var booleanKeepGoing;
this; // == valueOfElement (casted to Object)
return booleanKeepGoing; // optional, unless false// and want to stop looping}

continue是这样工作的:

返回非false与for循环中的继续语句相同;它将立即跳到下一次迭代。

我为这个问题的答案创建了一个Fiddle,因为接受的答案是不正确的,加上这是Google就这个问题返回的第一个StackOverflow线程。

为了打破$. each,你必须使用return false;

这里有一个小提琴证明它:

http://jsfiddle.net/9XqRy/

我遇到了一个打破循环的条件,但是. 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;}

"each"使用回调函数。回调函数的执行与调用函数无关,因此不可能从回调函数返回调用函数。

如果您必须根据某些条件停止循环执行并保持在相同的函数中,请使用for循环。

我知道这是一个相当古老的问题,但我没有看到任何答案,这澄清了为什么以及何时有可能与回报决裂。

我想用两个简单的例子来解释:

一、例子:在这种情况下,我们有一个简单的迭代,如果我们能找到这三个,我们希望与返回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;}

我使用这种方式(例如):

$(document).on('click', '#save', function () {var cont = true;$('.field').each(function () {if ($(this).val() === '') {alert('Please fill out all fields');cont = false;return false;}});if (cont === false) {return false;}/* commands block */});

如果cont不是false运行命令块