2011-02-24 88 views
2

我有这个
。每个不等待函数结束

$('li').each(function() { ... 

这个功能里面有一些动画,
但是这些动画不会被
这个函数被调用的时间完成再次。
有没有像一个切换,使每个等待
功能结束?

回答

1

你可以把动画的功能里面,以适应你的动画调用一个动画,然后让动画回调再次调用该函数。

function doStuff(){ 
    $('#element').animate({'property':1000},4000, doStuff); 
} 
+0

为我工作,尽管一旦我做出更复杂的事情可能会出现问题。 – Asaf 2011-02-25 15:21:57

0

没有。动画是异步的。 jQuery将它作为一个单独的进程触发,然后进入列表中的下一个元素。

你需要它的时候完成

+0

或者在动画之前使用“停止(true,true)”来停止该元素上的前一个元素,并有效地立即完成正在进行的动画。例如'$('#abc')。stop(true,true).fadeIn();' – Neil 2011-02-24 22:25:21

1

您可以停止动画http://api.jquery.com/stop/或者可以使用一个队列动画http://api.jquery.com/queue/

没有任何选项,每个等待动画结束。你可以做的是使用“控制”变种。在开始动画之前将var设置为true,然后为动画设置回调函数并将var设置为false。当您输入动画代码时,请检查var以查看是否还有待处理的动画。如果有,您可以排列动画。

0

动画是异步的,但没有理由说明为什么在每个函数中你的第一个动作不可能是某种门控机制,它可以有效地防止在动画结束时将其解除激活。

+0

非常有趣,我没有意识到这一事实在JavaScript中。 – Asaf 2011-02-25 15:22:54

0

Jquery动画是“异步”的。当他们被解雇时,他们不会停止Javascript引擎。 我能想到的等待动画结束的唯一方法是实现可以添加到jquery中的动画调用中的回调。

这将迫使你打开你的.each()调用。