如何突破每个循环的jQuery

Luk*_*101 627 jquery loops

如何打破jQuery each循环?

我试过了:

 return false;
Run Code Online (Sandbox Code Playgroud)

在循环中,但这不起作用.有任何想法吗?

更新虽然目前尚不清楚问题的原始范围是什么,但请注意所选答案仅涵盖each功能,但不包括each.

CMS*_*CMS 1101

为了break一个$.each循环,你必须返回$(selector).each在循环回调.

返回false跳到下一次迭代,相当于true正常循环中的a.

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

// or

$(selector).each(function() {
  if (condition) {
    return false;
  }
});
Run Code Online (Sandbox Code Playgroud)

如何从JQuery中的each()函数中断/退出中continue介绍了一个循环的中断?

  • 正是我在寻找,谢谢.@OZZIE,只需使用"return true;" 或"返回假"; 根据您的条件. (3认同)
  • @CMS“在循环回调中返回`false`是什么意思。”?这究竟是哪里? (2认同)

pow*_*tac 57

根据文档return false;应该做的工作.

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

在回调中返回false:

function callback(indexInArray, valueOfElement) {
  var booleanKeepGoing;

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

  return booleanKeepGoing; // optional, unless false 
                           // and want to stop looping
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句,continue工作方式如下:

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


iam*_*jpg 34

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

要突破$ .each,你必须使用 return false;

这是一个证明它的小提琴:

http://jsfiddle.net/9XqRy/

  • 我喜欢小提琴,但我不确定你为什么说接受的答案是不正确的,因为你们都说同样的话. (13认同)

Dav*_*rre 33

我遇到了遇到破坏循环的情况的情况,但是.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;
} 
Run Code Online (Sandbox Code Playgroud)


Vur*_*ral 10

我知道这是一个很老的问题,但我没有看到任何答案,这澄清了为什么以及何时可能与 return 中断。

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

1. 示例: 在这种情况下,我们有一个简单的迭代,如果我们能找到三个,我们想用 return true 来中断。

function canFindThree() {
    for(var i = 0; i < 5; i++) {
        if(i === 3) {
           return true;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我们调用这个函数,它会简单地返回 true。

2. 示例 在这种情况下,我们要迭代 jquery 的each 函数,它以匿名函数为参数。

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;
}
Run Code Online (Sandbox Code Playgroud)


小智 7

"each"使用回调函数.无论调用函数如何都执行回调函数,因此无法从回调函数返回调用函数.

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


Ahm*_*afi 6

我用这种方式(例如):

$(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 */
});
Run Code Online (Sandbox Code Playgroud)

如果 cont 不为 false 则运行命令块