一些 jQuery 动画方法采用描述为 的参数complete
,这是一个在动画完成后将被调用的函数。例如:
$(obj).slideUp(duration, easing, complete());
complete
这与在动画之后调用有什么不同?
$(obj).slideUp(duration, easing)
.complete();
一些 jQuery 动画方法采用描述为 的参数complete
,这是一个在动画完成后将被调用的函数。例如:
$(obj).slideUp(duration, easing, complete());
complete
这与在动画之后调用有什么不同?
$(obj).slideUp(duration, easing)
.complete();
不同之处在于,在第二种情况下,在动画开始complete
后立即调用它,而将其作为回调传递会在动画结束时触发它。
动画实际上可以是异步的,因此在您启动动画后 javascript 会继续执行,因此立即调用complete()
after$(obj).slideUp(duration, easing);
并不能保证complete
在动画完成后才会执行调用,只有在动画开始后才会执行。
还
$(obj).slideUp(duration, easing, complete());
真的应该
$(obj).slideUp(duration, easing, complete);
事实上,在第一种情况下,您甚至在动画开始之前就调用了该complete
函数!
最后,请注意第二个示例似乎是错误的:
$(obj).slideUp(duration, easing)
.complete();
这是将调用链接到slideUp
调用complete
但 jquery 对象没有complete
方法。应该是:
$(obj).slideUp(duration, easing);
complete();
因为它实际上是在问题的先前编辑中。
$(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
仅在动画完成后才会发出警报。