Второй аргумент animate () - это обратный вызов, который вызывается после завершения анимации. Поскольку $ ("# i0, # i1, # i2, # i3"). Animate (..) анимирует 4 объекта, он вызывает свой обратный вызов 4 раза. Такой подход может сработать:
function move(i, left, callback) {
$("#i"+i).animate({left:left}, callback);
}
function sequence(n, left, callback) {
return function() {
var i = 0;
for (; i < n; i++) {
move(i, left);
}
move(i, left, callback);
}
}
jQuery(function() { move(0, "+=100", sequence(3, "+=100", sequence(5, "+=100"))) });