【问题标题】:return false to terminate nested each loop not working返回 false 以终止嵌套的每个循环不起作用
【发布时间】:2014-07-17 12:01:17
【问题描述】:

我使用 return false 来终止每个循环,但它并没有打破循环。 我的代码如下:

$.each(popuparray, function (i, item) {
    $('.droparea >.ss-active-child').each(function () {
        if (this.id == finaldivId) {
            alert("this is " + this.id + "  finaldivId  " + finaldivId);
            return false;
        }
    });
    //some code here as well
});

请给我建议解决方案。

【问题讨论】:

  • 您希望两个循环都退出?
  • 是的,我想退出这两个循环。
  • 看我的回答希望对你有帮助

标签: jquery


【解决方案1】:

如果您希望两个循环都在条件下退出,请执行以下操作:

$.each(popuparray, function (i, item) {
    var flag = true;
    $('.droparea >.ss-active-child').each(function () {
        if (this.id == finaldivId) {
            alert("this is " + this.id + "  finaldivId  " + finaldivId);
            flag = false;
            return false;
        }
    });
if(!flag)
{
  return false;
}   

});

注意: return true 相当于 continue,所以你需要检查 flag,然后在外循环中 return false。

【讨论】:

  • 注意return true 将充当continue
【解决方案2】:

你还需要从外循环返回,你可以使用一个标志变量来跟踪内循环中的有效状态,并从外循环返回它的值。

$.each(popuparray, function (i, item) {
    var flag = true;
    $('.droparea >.ss-active-child').each(function () {
        if (this.id == finaldivId) {
            alert("this is " + this.id + "  finaldivId  " + finaldivId);
            flag = false;
            return false;
        }
    });
    //some code here as well
    return flag;
});

【讨论】:

    【解决方案3】:

    尝试声明一个标志并根据内部循环的流程进行切换,并根据该标志决定外部循环的流程,

    var xCondition = false;
    
    $.each(popuparray, function (i, item) {
        $('.droparea >.ss-active-child').each(function () {
            if (this.id == finaldivId) {
                alert("this is " + this.id + "  finaldivId  " + finaldivId);
                xCondition = true;
                return false;
            }
        });
    
        if(xCondition){ xCondition = false; return false; }   
    });
    

    【讨论】:

    • @Araju 很高兴为您提供帮助..!
    猜你喜欢
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 1970-01-01
    • 2016-04-02
    • 2017-06-01
    相关资源
    最近更新 更多