2015-04-18 58 views
0

Demo如何在我的方案中正確清除間隔?

$(".moving_container").mouseenter(
     function(){ 
      clearInterval(timer); 
     } 
    ).mouseleave(function(){ 
      timer = getInterval(slideWidth,slideHeight,slideLength) 
    }); 

我只是想創建一個滑塊。當光標位於滑塊頂部時,我想停止動畫,並且應該在光標離開滑塊時繼續。

但它工作不正常。

製作步驟: 調整屏幕大小並將鼠標懸停。 將光標移出滑塊。

Demo

如何正確清除間隔?

回答

1

代碼中的主要問題是mouseentermouseleave事件正在與每個窗口調整大小相加。我會建議組織你的代碼,以便事件連接一次。這將需要重構你的代碼。

一個快速的解決方案,但是,是他們重新連接,而僅在分離的事件:

$(".moving_container").off('mouseenter').off('mouseleave'); 

JSFiddle

更好的解決方案將是一個完全重寫,但:JSFiddle

+0

是。我可以將其添加到「幻燈片方法」之外。謝謝。有什麼方法可以改善我的代碼嗎?或者很好。謝謝 –

+0

你絕對可以改善代碼。在你放置牙套的位置以及你如何分配空間的事物方面保持一致。現在全是這個地方。另外,你正在窗口上定義'timer'。不要這樣做。 –

+0

@GopsAB我用重寫更新了答案。儘管通常情況下我不會編寫代碼(我總是做面向對象的事情),但請注意代碼和代碼在您的問題中的區別。 –