Галерея jQuery с методом setInterval () работает неправильно, когда страница теряет фокус - PullRequest
1 голос
/ 30 июня 2011

Я создаю код jQuery для вывода изображений каждые 5 секунд - когда фокус находится на кнопке, расположенной на изображении, он должен перестать меняться. У меня проблема, когда моя страница потеряла фокус - когда я возвращаюсь, она некоторое время не работает правильно, потому что координаты изображений не верны!

Вот мой код SavasSript:

var displayTimeout = 5000;
var bannerCurrentImgIndex = 0;
var timer;
var link;

function bannerDoWork() {

    var bannerImages = $("#myGallery .main_pic");
    var bannerImagesCount = bannerImages.length;

    if (bannerCurrentImgIndex == bannerImagesCount - 1) {
        bannerImages.eq(bannerCurrentImgIndex).animate({ 'left': '-725px' }, 'slow');
        bannerImages.eq(0).animate({ 'left': '0' }, 'slow');
        bannerImages.eq(bannerCurrentImgIndex - 1).css({ 'position': 'absolute', 'left': '725px' });
        bannerCurrentImgIndex = 0;
    }

    else {
        bannerImages.eq(bannerCurrentImgIndex).animate({ 'left': '-725px' }, 'slow');
        bannerImages.eq(bannerCurrentImgIndex + 1).animate({ 'left': '0' }, 'slow');
        bannerImages.eq(bannerCurrentImgIndex - 1).css({ 'position': 'absolute', 'left': '725px' });
        bannerCurrentImgIndex = bannerCurrentImgIndex + 1;
    }
}

$(document).ready(function () {
    timer = setInterval(function () { bannerDoWork(); }, displayTimeout);
    link = $("#myGallery .main_pic_btn");
    link.hover(function () { timer = clearInterval(timer); },
    function () {
        if (timer == null)
            timer = setInterval(function () { bannerDoWork(); }, displayTimeout);
    });

});

1 Ответ

0 голосов
/ 08 июля 2011

Я нахожу ответ!Я установил параметр анимации queue = false - и теперь он отлично работает!Пример:

firstPic.animate({ left: 0, top: 0 }, { queue: false, duration: "slow" });
...