Jquery:如何打破 each() 和它在里面的函数?

Posted

技术标签:

【中文标题】Jquery:如何打破 each() 和它在里面的函数?【英文标题】:Jquery: How to break out of each() and the function it's inside in? 【发布时间】:2013-12-30 06:24:06 【问题描述】:
$("#savebtn").click(function() 

    $('.mytable tr').each(function()
      if($('.mytable tr').length < 1)
          alert("Nothing in the table!")
          return 
      
    );
alert("You are still inside the click function")
);

只是在这方面有点麻烦。我想完全退出 jquery 每个循环并单击功能。但是“返回”只是让我脱离了每个循环。如何彻底退出点击功能?

【问题讨论】:

$('.mytable tr').length &lt; 1 inside .each 循环使用相同的选择器永远不会发生。顺便说一句,您可以在每个循环中使用 return false 来摆脱它。你到底想做什么? return 仍然让​​我留在函数中,我也想在每个循环内的 if 语句中跳出函数 这不是指定问题的重复。需要知道如何打破 each() 和函数。 我唯一能想到的就是将一个标志标记为真,突破每个标志,然后检查标志并再次返回。看起来很乱。 【参考方案1】:

如果表中没有任何内容,each 函数实际上将永远不会被执行(因为被迭代的集合是空的)。

也许您的意思是把条件作为click 函数的第一行:

$("#savebtn").click(function() 
    if($('.mytable tr').length < 1) 
        alert("Nothing in the table!");
        return;
    

    $('.mytable tr').each(function() 
        doSomething(this);
    );

    alert("You are still inside the click function")
);

附带说明,如果 each 函数是此块中的唯一内容,则无需针对空表情况执行任何特殊操作,因为每个函数将简单地执行零次。

【讨论】:

这很好,谢谢,最好把 if 语句放在函数的顶部,而不是在每个循环中。 这并没有回答打破每个和功能的原始问题。哦,好吧,也许重复的问答会。 - 不,它没有。

以上是关于Jquery:如何打破 each() 和它在里面的函数?的主要内容,如果未能解决你的问题,请参考以下文章

如何,使用 JQUERY .EACH() 但不用于元素,用于变量

如何在 XSLT 中打破 for-each 以及如何更新 XSLT 中的现有变量

jquery如何控制循环里面的层的显示与隐藏

怎么用JQuery的each函数循环去掉一个ul里面li的样式

jquery的$.each如何退出循环和退出本次循环

如何让 jQuery 等到 each() 中的所有 get() 请求完成