我使用jQuery 1.5.1这是我的代码:animate的回调函数(完成)在开始时执行?
$('.cellcontent').animate({
left: '-=190'}, {
easing: alert('start ani'),
duration: 5000,
complete: alert('end ani')});
我得到两个警报的动画开始之前!?我希望完整的功能在动画结束后启动。有什么想法吗?
我使用jQuery 1.5.1这是我的代码:animate的回调函数(完成)在开始时执行?
$('.cellcontent').animate({
left: '-=190'}, {
easing: alert('start ani'),
duration: 5000,
complete: alert('end ani')});
我得到两个警报的动画开始之前!?我希望完整的功能在动画结束后启动。有什么想法吗?
您需要传递一个函数才能调用。相反,你正在调用这个函数。
complete: function() { alert('end ani'); }
您需要传递一个函数才能完成。
试试这个:
$('.cellcontent').animate({
left: '-=190'}, {
easing: alert('start ani'),
duration: 5000,
complete: function() { alert('end ani') }
});
由于完成预期的功能,它执行您传递给它得到一个函数对象,它可以回调完成后的代码。
'easing'仍然是错误的。 – 2011-03-22 20:26:34
是的,但从OP想知道动画何时开始的问题来看,这将表明这一点。 – 2011-03-22 21:35:49
它会工作,但它仍然是错误的。 'alert()'返回传递给'easing'的undefined,这就是它工作的原因。如果你想知道它何时开始,只需在'.animate()'调用之前放置'alert'。 – 2011-03-23 01:39:21
在函数声明它们首先,否则该方法将立即调用:
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');
}
});
'easing'仍然是错误的。此代码不起作用。 – 2011-03-22 20:27:26
缓动通常是一个字符串,在这种情况下,我不知道OP的意图是什么,或者他如何得到这些代码。 – 2011-03-22 20:29:53
现在我收到一个错误:d.easing [j || k]不是函数? – Overbeeke 2011-03-22 20:30:27
我看到两件事情是错误的。
一,easing
应该是:
A string indicating which easing function to use for the transition
而且complete
应该是一个功能。
alert('start ani');
$('.cellcontent').animate({
left: '-=190'
},
{
easing: 'swing',
duration: 5000,
complete: function(){
alert('end ani');
}
});
$('.cellcontent').animate({
left: '-=190',
easing: 'slow',
duration: 5000,
function() {
alert('end ani');
}
});
我不认为你需要 “完整”?
slideToggle(
\t \t \t \t \t "fast","swing", function(){
\t \t \t \t \t \t \t // your code here
\t \t \t \t \t \t }
\t \t \t \t);
最佳解决方案是这样的。
$('.cellcontent').animate({
left: '-=190'}, {
easing: alert('start ani')
}, duration).promise().done(function() {
alert('end animation');
});
$("#clickme").click(function() {
$("#book").animate({
opacity: 0.25,
left: "+=50",
height: "toggle"
}, 5000, function() {
// Animation complete.
});
});
这是最短的解决方案。 – morning 2018-03-01 12:42:23
http://api.jquery.com/animate – 2011-03-22 20:18:55