【问题标题】:Event seem to get overwritten on timeouts 2nd loop事件似乎在第二次循环超时时被覆盖
【发布时间】:2011-12-31 04:00:41
【问题描述】:

我一直在编写一个简单的展示脚本,但遇到了一个我自己无法解决的问题...

首先,我贴一些代码:

    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.doTimeout (http://benalman.com/projects/jquery-dotimeout-plugin) 的 jquery 插件,它应该使使用 timout 更容易(到目前为止确实如此)。

运行 $.doTimeout(id) 会停止我之前使用相同 id 启动的超时。

展示作品,在正确的延迟后动画等。我试图在有人将鼠标悬停在展示作品上后停止它,但它只适用于第一个“循环”......计时器停止,一切都很好。 不幸的是,在 timeout 函数至少运行一次之后,事件似乎解除了自己的绑定...... timeout 一直在循环,但是 mouseover 或 blur 事件停止工作......

我已经为此坐了几个小时,但看不到解决方案...也许我只需要另一双眼睛来看看它!

提前致谢!!

【问题讨论】:

    标签: jquery events timeout unbind


    【解决方案1】:

    我想问题在于,如果您的超时功能正在运行,它总是在最后通过return true 重新启动。为什么不设置一个属性obj.showcase_active = true 并让超时功能return obj.showcase_active 而不是return true。然后在鼠标悬停回调中,停止计时器并设置obj.showcase_active = false

    【讨论】:

    • 太棒了,伙计!奇迹般有效!我刚刚成为你最大的粉丝......救命!
    猜你喜欢
    • 1970-01-01
    • 2014-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多