“完整”论证的目的是什么?

时间:2013-10-28 12:50:15

标签: javascript jquery animation

一些jQuery动画方法采用描述为complete的参数,这是一个动画完成后要调用的函数。例如:

$(obj).slideUp(duration, easing, complete());

这与动画之后调用complete有何不同?

$(obj).slideUp(duration, easing)
.complete();

2 个答案:

答案 0 :(得分:3)

不同之处在于,在第二种情况下,动画开始后立即调用complete ,而将其作为回调传递会在动画结束时触发它。

动画实际上可能是异步的,因此在您启动动画后javascript执行会继续,因此在complete() 之后立即调用$(obj).slideUp(duration, easing);来保证complete $(obj).slideUp(duration, easing, complete()); 1}}调用将在动画完成后执行,仅在启动后执行。

另外

$(obj).slideUp(duration, easing, complete);

应该是

complete

事实上,在第一种情况下,您在动画开始之前调用$(obj).slideUp(duration, easing) .complete(); 函数甚至

最后,请注意第二个例子似乎错了:

slideUp

这是通过调用complete来链接对complete的调用,但jquery对象没有$(obj).slideUp(duration, easing); complete(); 方法。应该是:

{{1}}

实际上是在之前的问题编辑中。

答案 1 :(得分:3)

$(obj).slideUp(duration, easing, complete());

这是错误的。这是在调用 complete之前调用slideUp

$(obj).slideUp(duration, easing);
complete();

执行slideUp后立即调用completeslideUp动画可能不会(事实上,不会)在调用complete时完成。

$(obj).slideUp(duration, easing, function () {
    alert('Complete!');
});

// or

$(obj).slideUp(duration, easing, complete);
                                     // ^^ look ma, no () !

现在这个就是你应该如何使用它。 “完成!”只有在slideUp动画完成后才会收到提醒。