0

如何在 for 循环完成所有交互之前停止警报功能的运行?

 $(document).ready(function() {
    for (i = 1; i <= 8; i++) {
        $('#ponyDiv').animate({left: '200px'}, 2000); 
    }
    alert("here");
});
4

3 回答 3

1

编辑:在循环中调用 animate() 时,您可以执行以下操作:

$(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');
  });
于 2013-03-06T07:20:13.030 回答
1

这将在循环完成时发出警报(而不是在最终动画完成时)。

$(document).ready(function() {
    for (i = 1; i <= 8; i++) {
        $('#ponyDiv' + i).animate({left: '200px'}, 2000);
        if(i === 8){
            alert("here");
        }
    }    
});
于 2013-03-06T07:30:20.377 回答
1

使用延迟:

$.when($('[id^=pony]').animate({left:'200px'},2000))
    .then(function() { alert('done'); });

当然,使用类比以 id 开头的属性要好,但你明白了它的要点。

于 2013-03-06T07:33:39.067 回答