我的脚本出现了一些无法预测的不幸事件,我开始认为它可能与我使用的动画有关。
我有一个元素附加了click()事件,触发动画。像
这样的东西$(el).click(function() {
$(this).animate({some properies}, 500);
});
让我们说一点点延伸
$(el).click(function() {
$(this).stop(true, true);
fancyFunction(this);
$(this).animate({some properies}, 500);
});
我现在已经添加了对fancyFunction的调用,重要的是我在对象上停止正在进行的动画(例如,我点击双击)。另外对于记录fancyFunction()必须确保元素上没有运行动画。
我认为这可能是我遇到的问题。您是否可以放心,在调用下一行之前,stop()已完成,在这种情况下是fancyFunction(),或者fancyFunction会在stop()启动后立即触发,但不一定完成?如果它的行为与动画类别中的其他功能相似,我猜不会。
如果这可能是问题,你有什么解决方案?
答案 0 :(得分:2)
.stop()
是同步,没有超时等... 将在下一个语句之前完成。我认为你的问题最有可能出现在其他地方,因为你拥有的将杀死该元素上的所有动画。
答案 1 :(得分:0)
Javascript是单线程的,所以在你的javascript执行时,没有办法执行另一段代码。即使动画仍在运行,此时代码正在执行,这意味着动画无法在代码运行时实际更改对象。但是,是的,你的停止调用将阻止动画运行,并且在fancyFunction运行时没有任何动画。
在继续之前你想做的事情。 fancyFunction是否使用定时器或任何可能延迟处理的东西?如果是这样,请考虑不使用计时器或延迟。我确信你可以做的事情不涉及计时器。