2011-12-12 195 views
3

有一個自定義的滑塊,我想停止懸停。我試圖清除並設置懸停時間間隔,但無法正常工作。它僅在我第一次懸停時停止,然後如果我將鼠標移出並再次停止。懸停清除間隔

這裏是我的代碼:

var itvl = null; 

    itvl = window.setInterval(function(){scroll_()},3000); 

    function scroll_() { 
     if ($('#carousel_ul li').length > 1) { 
      $("#right_scroll").click(); 
     } 
    } 

    $('#carousel_ul li').hover(function() { 
     window.clearInterval(itvl);  
    }, function() { 
     window.setInterval(function(){scroll_()},3000); 
    }); 

任何想法,我究竟做錯了什麼?

在此先感謝

莫羅

回答

2

當設置上懸停,關閉的時間間隔,你是不是設置itvl。 itvl實際上是一個作爲間隔引用的整數。所以當你做window.setInterval(function(){scroll_()},3000);時,參考值會發生變化而不會對任何東西產生任何影響。

試試這個:

$('#carousel_ul li').hover(function() { 
    window.clearInterval(itvl);  
}, function() { 
    itvl = window.setInterval(function(){scroll_()},3000); 
}); 
+0

謝謝!它像微風一樣工作! :) – Mauro74

+0

太棒了!很高興我能幫上忙。如果問題解決了,請記住標記爲已回答。 (我認爲在你提問後你必須等待15分鐘) – Vigrond

1
$('#carousel_ul li').hover(function() { 
    window.clearInterval(itvl);  
}, function() { 
    itvl = window.setInterval(function(){scroll_()},3000); 
}); 
0

您可以使用一個布爾變量而不是clearInterval:

var scrolling= true;  
    window.setInterval(scroll_,3000);  
    function scroll_() { 
     if(scrolling) { 
      if ($('#carousel_ul li').length > 1) { 
       $("#right_scroll").click(); 
      } 
     } 
    }  
    $('#carousel_ul li').hover(function() { 
     scrolling = false;  
    }, function() { 
     scrolling = true; 
    });