$("div").each(function(i, obj) {
i++;
var stopLoop = false;
if (!$(obj).attr('style') && stopLoop !== true) {
$(obj).attr('style', 'background:'+getRandomColor()+';');
return false;
}
});
以上方法工作,只要函数被触发,它就会为我的div
添加一种新颜色。但由于返回false被使用,我之后的代码将无法运行。所以我尝试使用if条件而不是返回false,它不起作用。
// doesn't work
$("div").each(function(i, obj) {
i++;
var stopLoop = false;
if (!$(obj).attr('style') && stopLoop !== true) {
$(obj).attr('style', 'background:'+getRandomColor()+';');
stopLoop = true;
}
});
答案 0 :(得分:0)
尝试休息:
$("div").each(function(i, obj) {
i++;
if (!$(obj).attr('style')) {
$(obj).attr('style', 'background:'+getRandomColor()+';');
break;
}
});
答案 1 :(得分:0)
使用下面的解决方案
var stopLoop = false;
$("div").each(function(i, obj) {
if(i === 0) {
stopLoop = false;
}
i++;
if (!$(obj).attr('style') && !stopLoop) {
$(obj).attr('style', 'background:'+getRandomColor()+';');
stopLoop = true;
}
});
答案 2 :(得分:0)
在全局范围内声明stopLoop变量。 在你的情况下,stopLoop在函数内是deaclared,在函数结束后它的工作变量将被删除。在另一次迭代中,它将再次声明为值false