我在$ .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答案 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
以外的所有返回值。