Все правильно. Первый вариант на самом деле работает.
var c=0;
function slideLeft() {
if (c==0) {
c=1;
var aniSpeed = 800;
$(".lastLast").addClass("noVisible").removeClass("lastLast");
$(".last").animate({"left": "-1950px"},aniSpeed).addClass("lastLast").removeClass("last"); //Скрываем last
$(".current").animate({"left": "-900px"},aniSpeed).addClass("last").removeClass("current"); //Сдвигаем current. Делаем его last
$(".next").animate({"left": "150px"},aniSpeed).addClass("current").removeClass("next"); //Сдвигаем next, делаем его current
$(".nextNext").animate({"left":"1200px"},aniSpeed,function(){c=0}).addClass("next").removeClass("nextNext"); //Сдвигаем класс nextNext. Делаем его next
$(".next").eq(0).next(".psItem").removeClass("noVisible").addClass("nextNext").animate({"left":"2250px"},1); //Определяем элемент nextNext
if(!($(".nextNext").length>0)) {
$(".psItem").eq(0).addClass("nextNext").removeClass("noVisible").animate({"left": "2250px"},aniSpeed);
}
}
}
Дело было в том, что я переменную
с обнулял в конце своей функции, а надо было в callback animate.