jquery:对animate()的行为感到困惑

时间:2014-03-30 02:17:20

标签: javascript jquery

我有以下jquery代码,通过while循环动画元素,增加计数器并重复调用animate():

$("#right").click(function () {
    $i = 1;
    $ii = 10
    while ($i < 250) {
        console.log($i);
        $("#content").animate({
            "left": "+=" + $ii + "px"
        },
            "fast");

        $i += $ii;
        console.log($i);

        if ($i > 250) {
            alert("I am an alert box!");
        }
    }
});

我不明白的是,似乎while循环立即完成,然后 animate()运行,因为当函数被调用时,console.log()立即写入计数器的所有迭代到控制台,警报弹出,然后元素移动。为什么这样,我如何检查animate()何时完成?

2 个答案:

答案 0 :(得分:0)

您可以使用动画完成时调用的回调。

更多信息here

答案 1 :(得分:0)

我不太清楚你想要做什么,但是while循环将永远立即完成。

你可以像这样检查动画的完成时间:

$("#content").animate({

},"fast",function(){
   alert('completed')
});

无论如何,我认为你的动画功能不会很好。如果你想增加&#34; #content&#34;左侧位置,您必须获得此$("#content").position().left

这样的信息