2013-06-28 19 views
0

您好我已經寫了創建過上懸停事件的圖像的黑條的腳本。當用戶開始滾動時,vlack欄消失。因爲沒有ScrollEnd事件,我創建了一個像這裏建議的計時器Event when user stops scrollingJQuery的上滾動結束計時器事件

它運行良好,但當我猛烈地來回滾動時,黑條開始重新出現。我不太清楚爲什麼會發生這種情況,但我認爲每次都將計時器分配給不同的滾動事件。

就如何解決這個任何想法?

的jsfiddle:http://jsfiddle.net/7kw8z/29/

Scroll事件代碼:

function scroll(imageContainer, menu){ 
imageContainer.mousewheel(function(event, delta, deltaX, deltaY) { 
    event.preventDefault(); 
    $("p").text(delta); 
    menu.css("visibility", "hidden"); 

    $.data(this, 'timer', setTimeout(function() { 
    menu.css("visibility", "visible"); 
     }, 1000)); 
}); 

}

+0

的可能重複[jQuery的:事件,當用戶停止滾動](http://stackoverflow.com/questions/3701311/jquery-event-when-user-stops-scrolling) –

回答

1

開始新一之前,您應該停止舊超時。 當您調用setTimeout()時,會返回timeoutId。保持該ID不影響延遲後是否執行超時。它只是給你一個方法來取消它,如果你需要。

var existingTimeout = $(this).data("timer"); 

if(existingTimeout) 
{ 
    clearTimeout(existingTimeout); 
} 

$(this).data("timer", setTimeout(function() { 
    menu.css("visibility", "visible"); 
}, 1000)); 
+0

真棒!謝謝! –

相關問題