今天,当我在jQuery .animate()
方法的选项中阅读它的新特性时,我面临着两个我认为具有相同作用的选项。
这些选项是done
和complete
。根据文档,它们是在动画完成时运行的函数。
complete
Type: Function()
A function to call once the animation is complete.
和:
done
Type: Function( Promise animation, Boolean jumpedToEnd )
A function to be called when the animation completes (its Promise object is resolved). (version added: 1.8)
现在我的问题是,这两者之间的区别是什么?
发布于 2015-02-06 18:25:33
JQuery使用promise,这意味着在完成时,JavaScript可以从promise转到next function。
假设您已经编写了go to foo和go to bar函数。无论第一次执行完成与否,JQuery都将在第一次开始执行后启动第二次执行。
因此,当您实现promise时,它将等待promise完成。
最后,在您的示例中,一旦完成,将调用complete :)。因此,如果您想在动画完成后进行处理,并在第一个技巧完成时再次执行一些技巧,请将其写入complete。
发布于 2013-07-12 06:39:31
done()在整个jQuery中是全局的,并基于正在完成的promise中的所有事件触发,而不管它们是排队还是异步。
在jquery的网站上查看promises:jQuery Promise
文档中的示例:
var effect = function() {
return $("div").fadeIn(800).delay(1200).fadeOut();
};
$("button").on("click", function() {
$("p").append(" Started... ");
$.when(effect()).done(function() {
$("p").append(" Finished! ");
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>Go</button>
<p>Ready...</p>
<div></div>
<div></div>
<div></div>
<div></div>
https://stackoverflow.com/questions/17125787
复制相似问题