Событие перезаписывается по тайм-ауту - PullRequest
0 голосов
/ 17 ноября 2011

Я работал над простым сценарием витрины, и столкнулся с проблемой, которую не могу решить самостоятельно ...

Прежде всего, я вставлю код:

    obj.timeout = function() {   

        $.doTimeout('showcase', config['timeout'], function() {
            //show preloader
            $.doTimeout('showcase');
            obj.addImage('next');
            var angle = 0;
            setInterval(function(){
                  angle+=3;
                 $(".showcase .preloader").rotate(angle);
            },10);
            $('.showcase .preloader').stop().fadeIn(config['speed']);

            $('.showcase img.next').load(function() {
                $('.showcase .preloader').stop().fadeOut(config['speed']);              
                obj.animateShowcase();
            });         
            return true;

        })
    };


    obj.init = function() {
        //bind events (stop the timer on window blur and showcase hover)

        $(window).bind('blur', function() {
            $.doTimeout('showcase');
        });
        $('section.showcase, .showcase .preloader').bind('mouseover', function() {
            $.doTimeout('showcase'); 
        });

        obj.timeout();   
        obj.loadData();

    };

Я использую плагин jquery с именем jQuery.doTimeout (http://benalman.com/projects/jquery-dotimeout-plugin),, который должен облегчить использование тайм-аута (пока это действительно так).

Запуск $ .doTimeout (id) останавливает тайм-аут, которыйРанее я начинал с того же идентификатора.

Витрина работает, оживляет после правильной задержки и т. д. Я пытаюсь остановить его после того, как кто-то наводит курсор на витрину, но он работает только на первом «цикле» ...Таймер останавливается и все в порядке. К сожалению, после того, как функция тайм-аута запустилась хотя бы один раз, события, кажется, перестают связываться ... тайм-аут продолжает работать, но события наведения мыши или размытия перестают работать ...

Iveсидел пару часов над этим, и не могу найти решение ... Может быть, мне просто нужна другая пара глаз, чтобы посмотреть на это!

Заранее спасибо !!

1 Ответ

1 голос
/ 18 ноября 2011

Полагаю, проблема в том, что если ваша функция тайм-аута работает, она всегда перезапускается в конце через return true.Почему бы вам не установить свойство obj.showcase_active = true и позволить функции тайм-аута return obj.showcase_active вместо return true.Затем в обратном вызове при наведении курсора остановите таймер и установите obj.showcase_active = false.

...