Лично я переставляю элементы местами на лету..
В move передаётся 1/-1 в зависимости от кнопки next/prev
function move(direction) { //300px = gallary width
$(imgset).eq(i).css('left', '0').animate({left: (300 * direction) + 'px'}, 1000);
i += direction; // 1 + (-1) = 0
if (i >= imgset.length) {
i = 0;
}
else if (i < 0) {
i = imgset.length - 1; // 5 - 1
}
$(imgset).eq(i).css('left', (300 *(-direction)) + 'px').animate({left: '0'}, 1000);
}
Взял функцию перестановки из своей либы.. Если надо, есть полная версия с пояснением.
Вроде как все пользуются подобной стратегией.. В любом случае это смело можно считать нормой