在$ .each里面$ .each中返回false

时间:2015-03-06 10:39:29

标签: javascript jquery

我在$ .each中使用$ .each迭代两个数组,并且当第二个$ .each中的事件发生我应该做什么时,我想为第一个$ .each返回false

$.each(dbFields, function(index, valuedb) {
    $.each(editFields, function(index, value2) {
        if ((valuedb.region == value2.regionField) && (valuedb.dbtype == value2.typeField)) {
            $('#' + value2.idField).attr('id', valuedb.dbid) ; 
            $('#' + valuedb.dbid).attr('elementid', valuedb.dbid) ;                  
            console.log('Match found between ' + value2.idField + ' and '+valuedb.dbid);
            return false; //return false for the first $.each
        }
        else {
            return true ; //return truefor the first $.each
        }      
    });
});

现在,当事件返回false发生时,它会为第二个$ .each

返回false

1 个答案:

答案 0 :(得分:4)

设置一个标志,以便你的外部循环知道返回false:

$.each(dbFields, function(index, valuedb) {
    var flag = true; // <=============

    $.each(editFields, function(index, value2) {
        if ((valuedb.region == value2.regionField) && (valuedb.dbtype == value2.typeField)) {

            $('#' + value2.idField).attr('id', valuedb.dbid);
            $('#' + valuedb.dbid).attr('elementid', valuedb.dbid);
            console.log('Match found between ' + value2.idField + ' and ' + valuedb.dbid);
            flag = false; // <=============
            return false; //return false for the first $.each

        } /* You don't need this ==============> else {

            return true; //return truefor the first $.each
        } */

    });

    return flag;  // <=============
});

如果您没有看到这种情况,则会返回true,这很好; $.each忽略除false以外的所有返回值。