用户将鼠标hover在链接上2秒钟后执行function

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

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

代码工作得非常好 。 它只会因alert()调用而中断,导致mouseout事件被触发。

我们从中学到了什么? 不要将alert()与focus / hover / mousemove相关的事件结合使用。

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