如何在for循环之后获取代码,直到for循环完成其交互操作才能运行?
问题描述:
如何在for循环完成所有interations之后停止alert函数的运行?如何在for循环之后获取代码,直到for循环完成其交互操作才能运行?
$(document).ready(function() {
for (i = 1; i <= 8; i++) {
$('#ponyDiv').animate({left: '200px'}, 2000);
}
alert("here");
});
答
编辑:调用动画()在一个循环的时候,你可以做到以下几点:
$(document).ready(function() {
var completed = 0;
for (i = 1; i <= 8; i++) {
$('#ponyDiv'+i).animate({
left: '200px'
}, 200, function() {
if (completed++ == 7) alert("here");
});
}
});
使用JQuery animate()“完整”的回调将被称为动画完成后右:
$('#ponyDiv').animate({left: '200px'}, 2000, function() {
alert('here');
});
答
当循环完成时(不是最终动画完成时)会发出警报。
$(document).ready(function() {
for (i = 1; i <= 8; i++) {
$('#ponyDiv' + i).animate({left: '200px'}, 2000);
if(i === 8){
alert("here");
}
}
});
答
递延:
$.when($('[id^=pony]').animate({left:'200px'},2000))
.then(function() { alert('done'); });
当然就更好地使用类比属性开始与ID,但你得到它的要点。
+0
好的解决方案@Tetaxa。 – ZKK 2013-03-06 07:36:08
你为什么要在循环中调用animate()? – kamituel 2013-03-06 07:20:33
这是我正在处理的更复杂的代码的一个更简单的例子。如果我可以解决这个问题,我的代码将工作。让我们将它改为$('#pony'+ i).animate({left:'200px'},2000); – Ben 2013-03-06 07:23:23
如果您使用相对测量(+ 200px),我可能会看到此用法,但不是硬编码测量。洞察你正在尝试做什么将会有所帮助。 – jackrugile 2013-03-06 07:23:25