$('#start').click(function() {
$('.sabbl').each(function(index) {
$(this).delay(500 * (index+1)).queue(function() {
// whatever
});
});
});
Ich würde das mit einer Kette von setTimeouts lösen:
$('#start').click(animate);
function animate () {
var $elems = $('.sabbl'),
i = 0,
l = $elems.length;
step();
function step () {
$elem = $elems.eq(i);
// Whatever
i++;
if (i < l) {
setTimeout(step, 500);
}
}
}
(ungetestet)
Der Vorteil davon ist, dass der Payload den nächsten Schritt verzögert. Wenn ich mich richtig erinnere sorgt das für gleichförmigere Animationen. Animations-Frameworks wie Émile so. Somit ist auch ausgeschlossen, dass sich mehrere Step-Funktionen im Event-Loop aufstauen, wenn der step einmal länger als der Intervall braucht.
Wenn man unbedingt jQuerys Animation Queue verwenden will, kann man natürlich $elems.delay(500).queue(step) statt setTimeout schreiben.
Mathias