是的,我之前已经问过这个问题,但我找不到有效的答案。这是其他一个问题的公认答案:
$('#element').hover(function()
{
$(this).data('timeout', window.setTimeout(function()
{
alert('hovered for 2 seconds');
}, 2000));
},
function()
{
clearTimeout($(this).data('timeout'));
alert('mouse left');
});
如你所见,它没有做到它应该做的事情。
我需要的是理论上简单但我不能让它工作 - 当用户在链接上盘旋2秒钟时,会调用一个函数。如果用户在2秒之前将鼠标移开,则没有任何反应。
答案 0 :(得分:14)
代码works perfectly fine。它只会因alert()
调用而中断,导致触发mouseout事件。
我们从中学到了什么? 请勿将alert()
与焦点/悬停/鼠标移动相关的事件结合使用。
顺便说一句,已有jQuery插件可用于您想要做的事情:http://cherne.net/brian/resources/jquery.hoverIntent.html