如何突破每个循环的jQuery

How to break out of jQuery each Loop

如何跳出jquery each循环?

我已经尝试过:

1
 return false;

在循环中,但这不起作用。有什么想法吗?


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

返回true跳过下一个迭代,相当于正常循环中的continue

1
2
3
4
5
6
7
8
9
10
11
12
13
$.each(array, function(key, value) {
    if(value ==="foo") {
        return false; // breaks
    }
});

// or

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


根据文件,return false;应该做这项工作。

We can break the $.each() loop [..] by making the callback function
return false.

在回调中返回false:

1
2
3
4
5
6
7
8
function callback(indexInArray, valueOfElement) {
  var booleanKeepGoing;

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

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

顺便说一句,continue的工作原理如下:

Returning non-false is the same as a continue statement in a for loop; it will skip immediately to the next iteration.


我为这个问题的答案创建了一个小提琴,因为接受的答案是错误的,加上这是Google返回的第一个stackoverflow线程。

每一个都必须使用return false;

这里有一把小提琴证明了这一点:

http://jsfiddle.net/9xqry/


我遇到了这样的情况:我遇到了一个打破循环的条件,但是.each()函数后面的代码仍然被执行。然后,我将一个标志设置为"true",并在.each()函数之后立即检查该标志,以确保后面的代码没有被执行。

1
2
3
4
5
6
7
8
9
10
11
$('.groupName').each(function() {
    if($(this).text() == groupname){
        alert('This group already exists');
        breakOut = true;
        return false;
    }
});
if(breakOut) {
    breakOut = false;
    return false;
}


"each"使用回调函数。回调函数执行与调用函数无关,因此无法从回调函数返回调用函数。

如果必须基于某些条件停止循环执行并保持在同一函数中,则使用for loop。


我知道这是一个很古老的问题,但我没有看到任何答案,这就解释了为什么以及何时有可能打破回归。

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

1。例子:在这种情况下,我们有一个简单的迭代,如果我们能找到这三个,我们希望用返回真来打破它。

1
2
3
4
5
6
7
function canFindThree() {
    for(var i = 0; i < 5; i++) {
        if(i === 3) {
           return true;
        }
    }
}

如果我们调用这个函数,它只返回true。

2。例子在本例中,我们希望使用jquery的每个函数进行迭代,该函数以匿名函数为参数。

1
2
3
4
5
6
7
8
9
10
11
12
13
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;
}