animate的回调函数(完成)在开始时执行?

我正在使用jQuery 1.5.1这是我的代码:

$('.cellcontent').animate({ left: '-=190'}, { easing: alert('start ani'), duration: 5000, complete: alert('end ani')}); 

动画开始前我都收到了警报!? 我希望在动画结束后启动完整的function。 有什么想法吗?

你需要传递一个函数来调用。 相反,你正在调用该函数。

 complete: function() { alert('end ani'); } 

我发现这有两个问题。

一, easing应该是:

一个字符串,指示要用于转换的缓动函数

complete应该是一个function。

http://api.jquery.com/animate

 alert('start ani'); $('.cellcontent').animate({ left: '-=190' }, { easing: 'swing', duration: 5000, complete: function(){ alert('end ani'); } }); 

您需要传递一个function才能完成。

试试这个:

 $('.cellcontent').animate({ left: '-=190'}, { easing: alert('start ani'), duration: 5000, complete: function() { alert('end ani') } }); 

由于complete需要一个函数,它会执行你传递给它的代码,以获得一个函数对象,它可以在完成时回调。

最好的解决方案是这样

 $('.cellcontent').animate({ left: '-=190'}, { easing: alert('start ani') }, duration).promise().done(function () { alert('end animation'); }); 

来自jquery文档 :

 $( "#clickme" ).click(function() { $( "#book" ).animate({ opacity: 0.25, left: "+=50", height: "toggle" }, 5000, function() { // Animation complete. }); }); 

首先在函数中声明它们,否则立即调用该方法:

 var onComplete = function () { alert('end ani'); }; 

然后调用它们没有()

 $('.cellcontent').animate({ left: '-=190'}, { easing: 'slow', duration: 5000, complete: onComplete //<-- function is passed as a variable, not called directly }); 

或者将它们直接包装到一个函数中(当你​​多次调用它时,可读性和速度较慢):

 $('.cellcontent').animate({ left: '-=190'}, { easing: 'slow', duration: 5000, complete: function () { alert('end ani'); } }); 

我不认为你需要“完整”?

 slideToggle( "fast","swing", function(){ // your code here } ); 
 $('.cellcontent').animate({ left: '-=190', easing: 'slow', duration: 5000, function () { alert('end ani'); } });