嵌套jQuery.each() – 继续/ break

考虑下面的代码
var sentences = [
        'Lorem ipsum dolor sit amet,consectetur adipiscing elit.','Vivamus aliquet nisl quis velit ornare tempor.','Cras sit amet neque ante,eu ultrices est.','Integer id lectus id nunc venenatis gravida nec eget dolor.','Suspendisse imperdiet turpis ut justo ultricies a aliquet tortor ultrices.'
    ];

    var words = ['ipsum','amet','elit'];

    $(sentences).each(function() {
        var s = this;
        alert(s);
        $(words).each(function(i) {
            if (s.indexOf(this) > -1)
            {
                alert('found ' + this);
                return false;
            }
        });
    });

有趣的部分是嵌套的jQuery.each()循环。根据the documentation,返回false将跳出循环(停止循环的执行 – 类似于正常的JavaScript break语句),并且返回非false将停止当前迭代并继续下一次迭代(类似于常规JavaScript continue语句)。

我可以打破或继续自己的jQuery.each(),但是使用嵌套的jQuery.each,我发现很难从子循环中突破父循环。我可以使用一个布尔值,并在每个子迭代更新它,但我想知道是否有一个更简单的方法

我已经设置an example at jsFiddle如果你想乱搞它。只需点击“测试”按钮运行上面所示的示例。

TLDR:在jQuery的上下文中有什么类似于标记的continue或break吗?

解决方法

你应该这样做没有jQuery,它可能不是“漂亮”,但有更少的事情,它更容易做完全你想要的,像这样:
var sentences = [
    'Lorem ipsum dolor sit amet,'Suspendisse imperdiet turpis ut justo ultricies a aliquet tortor ultrices.'
];

var words = ['ipsum','elit'];

for(var s=0; s<sentences.length; s++) {
    alert(sentences[s]);
    for(var w=0; w<words.length; w++) {
        if(sentences[s].indexOf(words[w]) > -1) {
            alert('found ' + words[w]);
            return;
        }
    }
}

You can try it out here.我不知道这是你的确切行为,但现在你不是在一个闭包里创建的双.each(),你可以返回或打破,无论何时你想在这种情况下。

相关文章

页面搜索关键词突出 // 页面搜索关键词突出 $(function () {...
jQuery实时显示日期、时间 html: &lt;span id=&quot...
jQuery 添加水印 &lt;script src=&quot;../../../.....
中文:Sys.WebForms.PageRequestManagerParserErrorExceptio...
1. 用Response.Write方法 代码如下: Response.Write(&q...
Jquery实现按钮点击遮罩加载,处理完后恢复 思路: 1.点击按...