Другой вариант, если вы используете jQuery 1.6, это использовать новый синтаксис, который позволяет вам использовать отложенное поведение для анимации. Например:
$.when($('#foo').animate({
top: 100,
left: 100
}, 3000)).pipe(function() {
return this.animate({
top: 0,
left: 0
}, 3000);
}).then(function() {
console.log('done');
});
Этот код анимирует #foo
, затем, когда эта анимация завершена, начинается следующая. Когда тот завершен, он записывает «сделано» на консоль. Если у вас есть много анимаций, это может быть чище, чем делать несколько вложенных обратных вызовов.