我使用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