当用户将鼠标悬停在某个元素上 x 秒后,如何触发函数?
这是我的代码:
$('#element').hover(function()
{
window.setTimeout(function()
{
alert('hovered for 2 seconds');
}, 2000);
},
function()
{
alert('mouse left');
});
但它并不完全按照我想要的方式工作。
我实际上想做的是,如果用户将鼠标悬停在 #element
上 2 秒,它应该触发 alert()
。但是,如果他在 2 秒结束之前将鼠标从 #element
上移开,则不会发生任何事情。
当前代码的问题是,如果我将鼠标移到 #element
上并在 2 秒结束之前将其移开,它仍然会触发 alert()
2秒后。
我真的希望这是有道理的。
Here's my code:
$('#element').hover(function()
{
window.setTimeout(function()
{
alert('hovered for 2 seconds');
}, 2000);
},
function()
{
alert('mouse left');
});
But it doesn't quite work the way I want it to.
What I'm actually trying to do is, if the user has his mouse over the #element
for 2 seconds it should trigger the alert()
. But if he moves his mouse away from the #element
before the 2 seconds are over nothing should happen.
And the problem with the current code is that if I move my mouse over the #element
and move it away before the 2 secs are over, it still triggers the alert()
after 2 secs.
I really hope this makes sense.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你快到了。您需要存储
setTimeout
的结果(我使用jQuery的数据),然后使用相同的值调用clearTimeout
。http://jsfiddle.net/nCcxt/
You are almost there. You need to store the result of
setTimeout
(I used jQuery's data), then callclearTimeout
with the same value.http://jsfiddle.net/nCcxt/