2011-10-03 50 views
0

我想在觸發滾動條滾動條時顯示工具提示。下面是當前的代碼:滾動事件的許多setTimeouts

if (window.hideTimeout) { 
    clearTimeout(window.hideTimeout); 
} 
handle.qtip('show'); 
window.hideTimeout = setTimeout(function() { handle.qtip('hide'); }, 1000); 

這工作正常,但它迅速滾動時運行速度慢在Firefox中,被使用,因爲可能很多一個定時器。我想知道是否有更好的解決方案?我想讓工具提示隱藏,如果一秒鐘內沒有滾動事件,本質上。

感謝

回答

1

我認爲瓶頸在於handle.qtip調用,所以使用

if (window.hideTimeout) { 
    clearTimeout(window.hideTimeout); 
    //qtip is already shown. 
} 
else 
{ 
    handle.qtip('show'); 
} 
window.hideTimeout = setTimeout(function() { handle.qtip('hide'); window.hideTimeout=false}, 1000); 

你也不能創建一個新的匿名功能的setTimeout的每一次。只需創建一次並反覆使用它。

//define once 
var tipHide = function(){handle.qtip('hide'); window.hideTimeout=false} 
... 
//use many times 
window.hideTimeout = setTimeout(tipHide, 1e3); 
0

嘗試了這一點:

window.hideTimeout = function(){ 
    clearTimeout(window.hideTimeout); 
    return setTimeout(function(){ handle.qtip('hide'); },1000); 
} 

這注冊一個新的人之前基本上清除您tiemout ..

0

如果一切都失敗了,看看從underscore.js的debounce功能。