我有一个用jquery在mouseover上执行的弹出窗口。
在该功能中,我在使用settimeout
显示弹出窗口之前有第二次延迟问题是,如果在那一秒内他们多次鼠标移动,则会触发多个弹出窗口。
$('#div').mouseover(function() {setTimeout("popup()",1000);});
我需要做的是禁用检测,然后在popup()中重新启用它。
我该怎么做?
答案 0 :(得分:3)
您可以将.hover()
与clearTimeout()
一起使用,如下所示:
$('#div').hover(function() {
$.data(this, 'timer', setTimeout(popup, 1000));
}, function() {
clearTimeout($.data(this, 'timer'));
});
如果鼠标离开,这将清除您设置的超时,您必须在元素上停留一整秒才能触发弹出窗口。我们只是在元素上使用$.data()
来存储计时器ID(所以我们知道要清除什么)。另一个变化是不将字符串传递给setTimeout()
,而是直接引用该函数。
答案 1 :(得分:1)
我想这样的事情
(function(){
var popup_timer = 0;
$('#div').mouseover(function() {
clearTimeout(popup_timer);
popup_timer = setTimeout("popup()",1000);
});
});
编辑更新的代码,clearTimeout添加,包装