2013-06-29 56 views
1

新的内容每次都会增加一倍,我怎么会让回调函数只触发一次而不是每个孩子?jquery动画回调调用一次而不是每个元素

+0

仅供参考,您不必通过'$( '格')儿童()'将jQuery再次,只是连锁调用:'$ ( 'DIV')。子女()。动画(...)'。 –

+0

更多副本:http://stackoverflow.com/q/909526/218196,http://stackoverflow.com/q/8790752/218196 –

回答

1

使用.promise.done一起:

从文档:

.promise()方法返回一个动态生成的承诺,解决一旦某种类型绑定到集合中的所有动作,排队或不,已经结束。

默认情况下,类型为“fx”,这表示当所选元素的所有动画完成时,返回的Promise将被解析。

所以用法是:

$(myElements).animate(...).promise().done(function() { 
    // called only when _all_ of the animations on 
    // "myElements" elements have completed 
}); 
+0

这是一个重复,虽然': - /' –

+0

所以它是,虽然接受的答案关于你提到的第一个问题在这个例子中是最重要的。 – Alnitak

+0

这就是为什么我指出使用其他答案。到目前为止,我发现的所有问题都提到了'.promise()。done'。只是说。我们不需要更多的那些IMO。 –