.animate()有两个完整的功能?

时间:2011-11-14 07:31:49

标签: jquery

我想知道是否可以在complete事件中添加两个或更多.animate()个函数,如下所示:

.animate(properties [, duration] [, easing] [, complete][, complete][, complete])

因为我不想拥有一个函数中发生的所有事情。我希望它们在不同的complete函数中分开!

这可能吗?

4 个答案:

答案 0 :(得分:4)

不,但你可以轻松传入一个匿名函数来调用你的两个(或更多)函数:

.animate(properties, function(){
    callback1();
    callback2();
});

其中callback1和callback2是函数。

答案 1 :(得分:2)

您可以将回调函数组合成一个(注意使用apply()以便在与原始回调相同的上下文中调用函数):

$("selector").animate(properties, duration, easing, function() {
    complete1.apply(this);
    complete2.apply(this);
    complete3.apply(this);
});

或者,您可以使用新的$.Callbacks工具将所有回调分组到一个对象中:

var animateCallbacks = $.Callbacks();
animateCallbacks.add([complete1, complete2, complete3]);

$("selector").animate(properties, duration, easing, function() {
    animateCallbacks.fireWith(this);
});

答案 2 :(得分:0)

不可能:-)。 快速的方法是在回调中调用两个函数。

答案 3 :(得分:0)

据我所知,the documentation仅提及一个回调函数。它可能会使用多个,但这种行为也可能在没有通知的情况下发生变化,因此您无论如何也不应该使用它。

您可以将函数调用放在匿名函数中。例如:

 $('.moving').animate({ height: '20px' }, function() {
   callback1();
   callback2();
   callback3();
 });