5

是的,我知道以前有人问过这个问题,但我找不到有效的答案。这是其他问题之一的公认答案:

$('#element').hover(function()
{
    $(this).data('timeout', window.setTimeout(function()
    {
        alert('hovered for 2 seconds');
    }, 2000));
},
function()
{
    clearTimeout($(this).data('timeout'));
    alert('mouse left');
});

http://jsfiddle.net/nCcxt/

如您所见,它没有做它应该做的事情。

我需要的理论上很简单,但我无法让它工作 - 当用户将鼠标悬停在链接上 2 秒时,会调用一个函数。如果用户在 2 秒过去之前将鼠标移开,则不会发生任何事情。

4

1 回答 1

14

代码工作得很好alert()它仅由于导致触发 mouseout 事件的调用而中断 。

我们从中学到什么?不要alert()与焦点/悬停/鼠标移动相关的事件结合使用。

顺便说一句,已经有 jQuery 插件可用于您想做的事情:http ://cherne.net/brian/resources/jquery.hoverIntent.html

于 2012-06-16T11:36:25.173 回答