我有一个弹出窗口,在jquery上执行mouseover。停止重复检测鼠标
在这一功能我使用弹出式窗口,前一秒钟延迟的setTimeout
问题是,如果在第二,他们鼠标在多次再多个弹出窗口被触发。
$('#div').mouseover(function() {setTimeout("popup()",1000);});
我需要做的是禁用检测,然后在popup()中重新启用它。
我该怎么做?
我有一个弹出窗口,在jquery上执行mouseover。停止重复检测鼠标
在这一功能我使用弹出式窗口,前一秒钟延迟的setTimeout
问题是,如果在第二,他们鼠标在多次再多个弹出窗口被触发。
$('#div').mouseover(function() {setTimeout("popup()",1000);});
我需要做的是禁用检测,然后在popup()中重新启用它。
我该怎么做?
我想是这样的
(function(){
var popup_timer = 0;
$('#div').mouseover(function() {
clearTimeout(popup_timer);
popup_timer = setTimeout("popup()",1000);
});
});
编辑更新的代码,clearTimeout增加,包裹
可以使用.hover()
用clearTimeout()
,像这样:
$('#div').hover(function() {
$.data(this, 'timer', setTimeout(popup, 1000));
}, function() {
clearTimeout($.data(this, 'timer'));
});
这将清除超时如果鼠标离开,您必须在元素上停留一整秒,以便弹出窗口触发。我们只使用元素上的$.data()
来存储计时器ID(所以我们知道要清除什么)。另一个变化是不传递字符串到setTimeout()
,而是直接引用该函数。
这似乎没有工作:s – Pablo 2010-07-31 16:09:26
更新了代码 – Ties 2010-07-31 16:19:27
我建议把整个东西包装在一个匿名函数中并在'popup_timer'上使用'var'。善待你的全球范围 – 2010-07-31 18:38:05