2011-11-17 58 views
0

我一直工作在一個簡單的展示腳本,撞到了一個問題,我不能讓過去的就我自己...事件似乎得到覆蓋在超時第二環

首先,生病粘貼一些代碼:使用

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開始的超時。

該展示的作品,在正確的延遲等動畫後我試圖阻止它後,有人盤旋在展櫃,但它只適用於第一個'循環'...計時器停下來,一切都很好。 不幸的是,超時功能運行至少一次後,事件似乎解除了自己的...超時保持循環,但鼠標懸停或模糊事件停止工作...

我坐了幾個小時,不能看到一個解決方案...也許我只需要另一雙眼睛來看看它!

在此先感謝!

回答

1

我想問題是,如果您的超時功能正在運行,它總是通過return true在最後重新啓動。爲什麼不設置屬性obj.showcase_active = true並讓超時功能return obj.showcase_active而不是return true。然後在鼠標懸停回調中,停止計時器並設置obj.showcase_active = false

+0

令人驚歎的東西哥們!奇蹟般有效!我只是成爲你最大的粉絲..救生員! – pgrzyb