Javascript 滚动事件的许多设置超时

Javascript 滚动事件的许多设置超时,javascript,jquery,Javascript,Jquery,我想在触发鼠标滚轮滚动时显示工具提示。以下是当前代码: if (window.hideTimeout) { clearTimeout(window.hideTimeout); } handle.qtip('show'); window.hideTimeout = setTimeout(function() { handle.qtip('hide'); }, 1000); 这是正确的,但是当快速滚动时,它在Firefox中运行缓慢,可能是因为使用了很多设置超时。我想知道是否有更好的解决办

我想在触发鼠标滚轮滚动时显示工具提示。以下是当前代码:

if (window.hideTimeout) {
    clearTimeout(window.hideTimeout);
}
handle.qtip('show');
window.hideTimeout = setTimeout(function() { handle.qtip('hide'); }, 1000);
这是正确的,但是当快速滚动时,它在Firefox中运行缓慢,可能是因为使用了很多设置超时。我想知道是否有更好的解决办法?我想隐藏工具提示,如果有一秒钟没有滚动事件,基本上


谢谢

我想瓶颈在于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);
试试这个:

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

这基本上会在注册新的tiemout之前清除tiemout。

如果所有其他操作都失败,请查看underline.js中的函数