В данный момент я не могу установить тестовый пример, но поскольку ваша анимация настроена на 5 секунд, но интервал срабатывает через 1 секунду, перемещение элементов вокруг, вероятно, прерывает следующую анимацию. Кроме того, вы, вероятно, хотите -=500
слева от вас, поэтому он продолжает идти влево, вместо того, чтобы идти к -500
каждый раз.
Попробуйте это:
var direction = '-=';
function doScroll()
{
$('#products ul').animate({left: direction + '500'}, 5000, function()
{
if (direction == '-=')
{
$('#products li:first').before($('#products li:last'));
}
else
{
$('#products li:last').after($('#products li:first'));
}
setTimeout(doScroll, 1000);
});
}
$(function()
{
$('#products ul').css({'width': $('#products ul li').length * 185});
setTimeout(doScroll, 1000);
});
Это запускает следующую анимацию через 1 секунду после завершения этой анимации, надеюсь, это что-то вроде того, что вам нужно.
Примечание: старайтесь не использовать eval()
Это то, что делает передачу строки в setTimeout()
или setInterval()
, вместо этого передайте функцию или анонимную функцию, как у меня выше.