javascript中断并继续循环

时间:2012-10-08 18:24:52

标签: javascript jquery animation loops break

当“延迟”和“动画”内部运行时,如何暂停/中断此循环,并在“动画”完成后从中断位置继续它以防止“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。

1 个答案:

答案 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();