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。
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'); } });