提问人:phpNutt 提问时间:11/17/2009 最后编辑:Rob WphpNutt 更新时间:12/28/2011 访问量:1141
Javascript:事件侦听器 mouseout
Javascript: Event Listener mouseout
问:
让我解释一下我的问题。我有一个 mouseout 事件分配给 id 为 calendar 的 div 标签。现在,当调用此处理程序时(当鼠标不在日历 div 上时),我想等待 2 秒钟,然后查看鼠标是否仍未在日历 div 上。如果鼠标我仍然在外面,那么做一个功能,如果没有,那就什么都不做。
我使用原型 javascript 库。 我的代码如下:
$('calendar').observe('mouseout', function (event){
setTimeout(/* call this event again */, 2000);
}
谢谢
答:
2赞
David Hedlund
11/17/2009
#1
$('calendar').observe('mouseout', function(e) {
myTimeout = setTimeout(function() { /* stuff to do after 2 secs */, 2000);
});
$('calendar').observe('mouseover', function(e) {
if(myTimeout) window.clearTimeout(myTimeout);
});
评论
0赞
phpNutt
11/17/2009
2 秒后你有 /* 事情要做 */ 这是我想看看鼠标是否仍然在日历 div 上的地方。这是我不确定的
0赞
David Hedlund
11/17/2009
是的,好吧,如果你查看下面的“mouseover”中的内容,当元素再次悬停时,它实际上会取消计时器,所以这意味着,如果该代码执行,你知道根据定义它没有在 2 秒内被鼠标悬停,所以你想做的,在那里是安全的
0赞
Shawn Steward
11/20/2009
只要确保在这两个函数的作用域之外声明 myTimeout 变量,这应该有效。
0赞
David Hedlund
11/20/2009
实际上,这不是必需的。如果你引入一个没有“var”关键字的变量,它就会成为一个全局变量,无论你在哪个范围内引入它(继续尝试)。在此之前,鼠标悬停不会导致错误,因为我们正在检查它是否存在,并且在发生这种情况之后,在第一次鼠标退出时,它也不会成为问题,因为它将成为全局的
评论