2011-06-17 65 views
1

我有一個內容滑塊腳本中的現有功能,它爲下一張幻燈片設置超時動畫。我想停止mouseover上的動畫(我評論了我對腳本的補充)。我究竟做錯了什麼?謝謝你的幫助。setTimeout,clearTimeout jQuery

function autoSlide() { 
     if (navClicks == 0 || !settings.autoSlideStopWhenClicked) { 
      if (currentPanel == panelCount) { 
       var offset = 0; 
       currentPanel = 1; 
      } else { 
       var offset = - (panelWidth*currentPanel); 
       currentPanel += 1; 
      }; 
      alterPanelHeight(currentPanel - 1); 
      // Switch the current tab: 
      slider.siblings('.coda-nav').find('a').removeClass('current').parents('ul').find('li:eq(' + (currentPanel - 1) + ') a').addClass('current'); 
      // Slide: 



      $('.panel-container', slider).animate({ marginLeft: offset }, settings.slideEaseDuration, settings.slideEaseFunction); 

      setTimeout(autoSlide,settings.autoSlideInterval); 

    // this is my addition to try to stop the animation:    
      $('.panel-container', slider).mouseover(function(){ 
      //alert("hi"); 
       clearTimeout(autoSlide); 

      }).mouseleave(function(){ 

       setTimeout(autoSlide,settings.autoSlideInterval); 

      }); 
    // end of my addition   

     }; 
    }; 
+0

有什麼問題? – SLaks

+0

它不起作用... – user803592

+0

如果它仍然不能正常工作(當您真正看到發生了什麼時,它會更容易),您可以發佈[jsFiddle](http://jsfiddle.net)演示。 – kapa

回答

3

clearTimeout()作品與setTimeout()返回值(用於操作的ID),所以你應該保存它,當你設置它,並利用它來進行明確。

var x=setTimeout(autoSlide,settings.autoSlideInterval); 
... 
clearTimeout(x); 

  • MDC on clearTimeout

    window.clearTimeout(timeoutID)

    其中 timeoutID是超時的ID,你 希望清除,由 window.setTimeout爲返回( )。

0

autoSlide不超時,這是你的函數名,所以你不能清除它的超時。 setTimeout返回您需要捕獲的超時參考,並在此處調用clearTimeout。見下面的代碼:

var slideTimeout = setTimeout(autoSlide,settings.autoSlideInterval); 


$('.panel-container', slider).mouseover(function(){ 
    clearTimeout(slideTimeout); 
}).mouseleave(function(){ 
    slideTimeout = setTimeout(autoSlide,settings.autoSlideInterval); 
}); 
+0

謝謝。這似乎是有道理的,但:(但它沒有工作,現在幻燈片滑入和滑出的速度非常快。奇怪。 – user803592

+0

嘗試將slideTimeout的聲明移到函數之外或將其分配給窗口對象:' window.slideTimeout'。它可能不應該在函數內部聲明,這是我的錯。 – Endophage

+0

是的,我實際上嘗試過自己,但它並沒有幫助。有趣的是,只需設置變量(在函數內部或外部) ,使得幻燈片真的很快來回,肯定還有別的不對勁。 – user803592

相關問題