♠♠简短回答:
您在完成中编写的所有代码(异步与否)首先运行,当它们完成时,完整的代码将运行
您还可以在完成函数中使用两个参数,而完整函数不接受任何参数
♠♠详细解答:
完成和完成有两个区别:
1-完成具有完成时间优先权,因此您在完成中编写的所有代码(异步或非异步)首先运行,当它们完成时,完成的代码将运行
例如,在下面的代码(jsFiddle)中,我们有一个动画,它同时具有 done 和 complete 函数,当动画完成时,done函数使 div 的背景颜色为蓝色,而complete函数使 div 的背景颜色为红色:
$.noConflict();
jQuery(document).ready(function ($) {
$('#d_1').click(function () {
$(this).animate
(
{
width: '200px'
},
{
duration: 800,
complete: function () {
$(this).css({
backgroundColor: 'red'
});
},
done: function () {
$(this).css({
backgroundColor: 'blue'
});
}
}
)
});
})
如您所见,最终的背景颜色是红色,它是在完整功能中设置的。
2- done 和 complete 是函数,但 complete 不能接受任何参数,而 done 可以有两个参数(来自jQuery 文档):
完毕
类型:函数(Promise 动画,布尔 jumpedToEnd )
当元素上的动画完成(其 Promise 对象已解析)时要调用的函数。(添加的版本:1.8)
“promise 动画”与 jQuery 动画的“fx”原型相同,“jumpedToEnd”是一个辅助参数,表示如果动画被中断或不成功(其 Promise 对象被拒绝),它会自动跳转到结束。