在我的代码中,一个函数在第一次用户鼠标悬停在div上时执行,该函数需要30秒才能完成,在30秒内如果用户再次鼠标悬停在相同的div上,该函数再次执行,所以我想禁用鼠标悬停事件第二次。是否有任何javascript或jquery代码禁用该div甚至? 谢谢,任何帮助都会受到衷心的赞赏。
答案 0 :(得分:10)
使用jQuery的on()和off()进行某种回调,例如:
$("#myElementID").on('mouseover', myFunction);
myFunction(e) {
var myElement = e.target;
myElement.off('mouseover', myFunction);
//do something that takes 30 seconds
myElement.animate({top: 1000}, 30000, function() { //callback
myElement.on('mouseover', myFunction);
});
}
答案 1 :(得分:3)
var isExecuting = false;
function yourThirtySecFunction() {
if (isExecuting == true) return;
isExecuting = true;
//do your stuff here
isExecuting = false;
}
答案 2 :(得分:3)
你可以看一下jquery的一个有趣的特性...... .one()
这里是the link
描述:将处理程序附加到元素的事件。每个元素最多执行一次处理程序。
第二个想法
我可以给你一个更多的想法,假设鼠标悬停发生一次,只需在开始操作之前取消绑定鼠标悬停事件,然后一旦操作结束,再将它们绑定回来......