ChatGPT解决这个技术问题 Extra ChatGPT

如何打破 jQuery 每个循环?

如何跳出 jQuery each 循环?

我努力了:

 return false;

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

2020 年 9 月 5 日更新

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

对于后代:为什么提问者说返回 false 不起作用?几乎每个答案都说要这样做。想知道是否可能是因为这只会终止每个循环。相比之下,for 循环中的 return 语句将退出循环和调用函数。要从每个循环中获得如此激烈的行为,您需要在每个循环内设置一个带有闭包范围的标志,然后响应它外部的标志。
@BobStein-VisiBone 有人删除了我原来的评论。我把 return false 放在了错误的位置。当我修复它时,一切正常。
不知道为什么“更新”说 return false 不适用于 $().each - 因为它确实有效。
@Luke101 您应该更新问题以明确什么不起作用。当您的问题说接受的答案不起作用时,此 Q/A 毫无意义。
@daprezjer 你希望这个问题如何改变?我会编辑它,但不确定什么是合适的。

C
Christian C. Salvadó

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;
  }
});

正是我要找的,谢谢。 @OZZIE,只需使用“return true;”或“返回错误;”根据你的条件。
@CMS 是什么意思“在循环回调中返回 false。”?这究竟是哪里?
例如$.each(array, function(key, value) { if(value == "foo") return false; });
不知道 jQuery 必须从 javascript forEach 交换参数位置。
@AlexR 打破 $().each 的方式完全相同,您的编辑只会造成混乱。
p
powtac

According to the documentation return false; should do the job.

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

在回调中返回 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 循环中的 continue 语句相同;它将立即跳到下一次迭代。


D
David Aguirre

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

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

i
iamjpg

我为这个问题的答案创建了一个 Fiddle,因为接受的答案不正确,而且这是从 Google 返回的关于这个问题的第一个 StackOverflow 线程。

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

这是一个小提琴证明它:

http://jsfiddle.net/9XqRy/


我喜欢小提琴,但我不确定你为什么说接受的答案不正确,因为你们都在说同样的话。
V
Vural

我知道这是一个相当古老的问题,但我没有看到任何答案,这阐明了为什么以及何时可以打破回报。

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

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

function canFindThree() {
    for(var i = 0; i < 5; i++) {
        if(i === 3) {
           return true;
        }
    }
}

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

<强> 2。示例 在这种情况下,我们要使用 jquery 的 each function 进行迭代,它以匿名函数为参数。

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;
}

S
Sumit Jambhale

“每个”使用回调函数。回调函数执行与调用函数无关,因此无法从回调函数返回到调用函数。

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


A
Ahmadreza Sadafi

我用这种方式(例如):

$(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 运行命令块