当“延迟”和“动画”内部运行时,如何暂停/中断此循环,并在“动画”完成后从中断位置继续它以防止“i”变量被覆盖? 或者也许还有其他方法可以阻止'i'变量在动画过程中被覆盖?
for(i=0;i<inputs.length;i++){
var now = inputs[i];
var top = inputs[i].attr('top');
if(!now.val()){
if(dialog.css('display')=='none'){
now.addClass('style');
dialog.css('top',top).fadeIn(200);
}
else {
dialog.delay(300).animate({"top": top}, 500, function(){
now.addClass('style');
});
}
}
else{
now.removeClass('style');
}
}
我不能在延迟和动画之前添加Class,因为我需要在延迟和动画完成后添加Class。
答案 0 :(得分:3)
通过调用相同的函数直到所有元素动画完成。
var i = 0;
function animate() {
if (inputs.length == i) {
return;
}
var now = inputs[i];
var top = inputs[i].attr('top');
if (!now.val()) {
if (dialog.css('display') == 'none') {
now.addClass('style');
dialog.css('top', top).fadeIn(200, function(){
animate(); // recall it after fadein
});
} else {
dialog.delay(300).animate({
"top": top
}, 500, function () {
now.addClass('style');
animate();// recall it after animate complete
});
}
} else {
now.removeClass('style');
}
i++;
}
animate();