一些jQuery动画方法采用描述为complete
的参数,这是一个动画完成后要调用的函数。例如:
$(obj).slideUp(duration, easing, complete());
这与动画之后调用complete
有何不同?
$(obj).slideUp(duration, easing)
.complete();
答案 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
后立即调用complete
。 slideUp
动画可能不会(事实上,不会)在调用complete
时完成。
$(obj).slideUp(duration, easing, function () {
alert('Complete!');
});
// or
$(obj).slideUp(duration, easing, complete);
// ^^ look ma, no () !
现在这个就是你应该如何使用它。 “完成!”只有在slideUp
动画完成后才会收到提醒。