如何从 JQuery 中的 each() 函数中中断/退出? [复制]

Posted

技术标签:

【中文标题】如何从 JQuery 中的 each() 函数中中断/退出? [复制]【英文标题】:How to break/exit from a each() function in JQuery? [duplicate] 【发布时间】:2010-12-20 10:25:56 【问题描述】:

我有一些代码:

$(xml).find("strengths").each(function() 
   //Code
   //How can i escape from this block based on a condition.
);

如何根据条件从“每个”代码块中逃脱?

更新:

如果我们有这样的东西怎么办:

$(xml).find("strengths").each(function() 
   $(this).each(function() 
       //I want to break out from both each loops at the same time.
   );
);

是否有可能从内部的“每个”函数中分离出两个“每个”函数?

# 19.03.2013

如果你想继续而不是爆发

return true;

【问题讨论】:

直接访问文档:google.com/search?q=jquery+for+each+break, api.jquery.com/jquery.each 不是重复的。链接的问题是关于$.each(),但这个问题是关于$().each,它们是两个不同的东西。 这是谷歌上用于该搜索的第二个链接。 【参考方案1】:

根据documentation你可以简单的return false;来破解:

$(xml).find("strengths").each(function() 

    if (iWantToBreak)
        return false;
);

【讨论】:

简单的“返回”对我不起作用。这就是为什么我用谷歌搜索并找到这篇文章的原因。 'return false' 有效。我正在用 chrome 运行 osx lion。 “简单返回”实际上返回。它将从each 和它周围的所有其他东西返回控制权,直到它退出each() 的父控件 - 例如使用每个的函数()。这是正确答案,其他方法行不通。 "我们可以通过使回调函数返回 false 来在特定迭代中打破 $.each() 循环。返回非 false 与 for 循环中的 continue 语句相同;它将跳过立即进入下一次迭代。” 请注意,这不会杀死主函数,循环可以中断,但是当你使用这个jQuery在继续之前检查所需的字段时,无论中断它都会继续。为此,您应该在循环中使用 var kill 变量集,并在其外部读取以返回 if kill==1【参考方案2】:

您可以使用return false;

+----------------------------------------+
| javascript              | php          |
+-------------------------+--------------+
|                         |              |
| return false;           | break;       |
|                         |              |
| return true; or return; | continue;    |
+-------------------------+--------------+

【讨论】:

我不明白你的意思 我的意思是return false;在 javascript 中与在 PHP 中的 break 相同并返回 true;或返回;和继续一样 @SubodhGhulaxe 它是 jQuery 而不是 javascript so Codler 和 return false 有什么区别;在javascript中并返回false;在 jQuery 中 @SubodhGhulaxe return false 在 javascript 中的意思是在 PHP 中返回相同的布尔类型。但在jquery.each() 中,jQuery 会将其解释为停止循环。【参考方案3】:

从匿名函数返回 false:

$(xml).find("strengths").each(function() 
  // Code
  // To escape from this block based on a condition:
  if (something) return false;
);

来自each method的文档:

从 each 中返回 'false' 函数完全停止循环 通过所有元素(这是 就像在正常情况下使用“休息” 环形)。从内部返回“真” 循环跳到下一次迭代 (这就像使用“继续” 一个正常的循环)。

【讨论】:

【参考方案4】:
if (condition) // where condition evaluates to true 
    return false

见 similar question 3 天前询问。

【讨论】:

以上是关于如何从 JQuery 中的 each() 函数中中断/退出? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

带有 ES6 箭头函数的 jQuery .each() 函数

如何跳出当前jquery.each()函数循环

Jquery之each函数详解

jquery - $(this).remove() 不适用于 each() 函数

Jquery Each函数补充——相关参数解释

jquery中的each函数和map函数的区别