Показать сообщение отдельно
  #1 (permalink)  
Старый 17.11.2010, 10:44
Аватар для InviS
Кандидат Javascript-наук
Отправить личное сообщение для InviS Посмотреть профиль Найти все сообщения от InviS
 
Регистрация: 19.02.2010
Сообщений: 116

.animate Хром/Сафари баг. Нужна помощь
Ребят, делаю галерею. Столкнулся с проблемой.... .animate в хроме/сафари как-то странно работает. Вот код:
/**
* Анимация next
*/
function animateNext(){
    if (!isAnimated){
        isAnimated = true;
        // добавляем фото
        $tempImg = $("<img />",{id : "tempImg", alt: "temp", src: nextImg});
        $tempImg.css({position: "absolute", marginLeft: "-852px"}); 
        $("#photo-wrapper").append($tempImg);
        // движение
        $("#mainImg").animate({marginLeft: 852}, "normal");
        $("#tempImg").animate({marginLeft: 0}, "normal",function(){
            // возвращаем все, как было
            $("#mainImg").attr("src",nextImg).css({marginLeft:0});
            $("#tempImg").remove();
            current++;
            if (current==galerySize) current = 0;
            preload(current);
            isAnimated = false;
        });    
    }
}

Что я здесь делаю:
1) создаю еще одно изображение (правее заданного - его не видно изначально)
2) анимирую изображение, которое сейчас видно и вновь созданное - смещение обеих вправо на ширину изображения.
3) Возвращаю старое изображение на место, меняю ему src на новый и удаляю временное изображение.

В хроме у меня начались проблемы... циклится смена изображений.. я так понимаю, что он тупо не может выйти из callback функции animate... почему - не знаю. Помогите пожалуйста. Пронаблюдать баг можно здесь:
http://gsg.banana.dn.ua/restaurants/shato/
(чтоб просмотреть галерею - нажмите на маленькое изображение внизу)

P.S. Кстати. по-другому тоже пробовал сделать - удалять mainImg и переприсваивать id... Все равно не катит.. все равно в хроме и сафари баг с выходом из .animate.
Ставил alert() на выходе - до него так и не доходит... что делать?

Последний раз редактировалось InviS, 17.11.2010 в 10:51.
Ответить с цитированием