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

前端之家收集整理的这篇文章主要介绍了嵌套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(),你可以返回或打破,无论何时你想在这种情况下。

猜你在找的jQuery相关文章