正常的jQuery addClass
方法並不需要一個回調函數。它不返回,直到操作完成,所以你可以放心地把代碼以下行:
$('#move').bind('tap', function() {
$('.page').addClass('slideLeftOut');
$('#wrapper').css("height","300");
});
由於您使用jQuery UI,但是,這是一個有點棘手。 The jQuery UI extension to addClass
不提供回調參數。
由於UI addClass
方法使用animate
內部,你可以使用jQuery的1.6 $.Deferred
增強,它允許你調用函數時完成的元素上的所有動畫。這是很容易與promise
實現:
$('#move').bind('tap', function() {
$('.page').addClass('slideLeftOut').promise().done(function() {;
$('#wrapper').css("height","300");
});
});
參見:
注意,這將只運行在所有個動畫是完整的,不只是addClass
之一。
如果您使用瀏覽器的原生動畫容量,我不相信有什麼簡單的方法可以找出動畫完成的時間。您需要在指定的時間段內使用setTimeout
來運行代碼。
See jsFiddle:
$('.page').addClass('slideLeftOut');
setTimeout(function() {
$('#wrapper').css("height","300");
}, 500);
似乎並沒有解決這個問題:/。我會上傳到jsFiddle – TaylorMac 2011-06-05 23:23:32
真的很酷這個承諾的事情......不知道它。 – 2011-06-05 23:23:40
我已經添加了上面的JSfiddle,我將#wrapper背景設置爲紅色,以便您可以看到它。如果在slideLeftOut動畫期間可以看到紅色背景,而不是在完成後,它應該會成功 – TaylorMac 2011-06-05 23:28:29