返回false以终止嵌套的每个循环不起作用

时间:2014-05-28 10:06:31

标签: jquery

我使用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
});

请建议我解决方案。

3 个答案:

答案 0 :(得分: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; }   
});

答案 1 :(得分:0)

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

$.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;
});

答案 2 :(得分:0)

如果你想要两个循环退出条件,那么这样做:

$.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;
}   

});

注意:返回true表示继续操作,因此您需要检查该标志,然后在外部循环中返回false。