我有一个jquery代码,用于在网站的菜单栏中观察mouseenter
事件。
menubar.on('mouseenter', 'li.parent.level0', function() {
... function body
});
现在我想提供一个延迟,使事件函数体在2000 ms
之后执行,如下所示:
menubar.on('mouseenter', 'li.parent.level0', function() {
delay(2000);
... function body
});
我尝试了以下内容:
menubar.on('mouseenter', 'li.parent.level0', function() {
delay(2000);
... function body
});
var delay = (function(){
var timer = 0;
return function(callback, ms){
clearTimeout (timer);
timer = setTimeout(callback, ms);
};
})();
但它仍然没有考虑延迟,只是在mouseenter
上立即执行菜单代码。
怎么做?
答案 0 :(得分:0)
您似乎正在寻找的是常规setTimeout
,这将延迟您放入其中的任何代码的执行。
menubar.on('mouseenter', 'li.parent.level0', function() {
setTimeout(function() {
// ... function body
},2000);
});
答案 1 :(得分:0)
只需使用orders = Order.objects.filter(guest=guest).all()
:
setTimeout
如果他们在触发之前离开元素,您可能想要取消它:
menubar.on('mouseenter', 'li.parent.level0', function() {
setTimeout(function() {
// Do the work here
}, 2000);
});
请注意,var menubarMouseEnterTimerHandle = 0;
menubar
.on('mouseenter', 'li.parent.level0', function() {
clearTimeout(menubarMouseEnterTimerHandle); // Just in case, but we shouldn't get repeated mouseenters...
menubarMouseEnterTimerHandle = setTimeout(function() {
// Do the work here
}, 2000);
})
.on('mouseleave', 'li.parent.level0', function() {
clearTimeout(menubarMouseEnterTimerHandle);
menubarMouseEnterTimerHandle = 0;
});
是一个无效的计时器句柄,如果句柄为0
,clearTimeout
将忽略对它的调用,因此我们不需要保护上面0
: