Все они происходят одновременно, потому что все setTimeout
вызываются внутри each
, что не займет много времени для зацикливания списка элементов (всего несколько миллисекунд).Если вы хотите связать их, используйте обратный вызов complete
, равный jQuery#animate
, чтобы подать сигнал на запуск следующей анимации:
function iterate() {
var $list = $(".mini"), // get the whole list of elements
i = 0; // i is the index of the currently animated element from list
function next() { // the function that when called will get the current element from list (if exists) and starts that element's animation
if(i < $list.length) { // if there is still un-animated elements in $list
setTimeout(function() { // animate the current element
go($list.eq(i), next); // specify that next will be called when the current element's animation is done
}, 500);
i++; // increment i of course
}
}
next(); // call next to start the magic
}
function go(element, complete) { // go will take an element to be animated, and a function that will be called when that animation is done
element.animate({left: "500px"}, 200, complete); // simply call animate with that additional function (see jQuery#animate docs)
}