用户在链接上悬停2秒后执行功能

时间:2012-06-16 11:34:56

标签: javascript jquery

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

$('#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秒之前将鼠标移开,则没有任何反应。

1 个答案:

答案 0 :(得分:14)

代码works perfectly fine。它只会因alert()调用而中断,导致触发mouseout事件。

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

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