Javascript 暂时禁用JS交互?
我希望以下功能的运行方式能够防止用户滥发mouseenter、mouseleave功能,这样他们只能在淡入淡出操作完成后才能运行mouseenter/leave功能。我该怎么做Javascript 暂时禁用JS交互?,javascript,jquery,Javascript,Jquery,我希望以下功能的运行方式能够防止用户滥发mouseenter、mouseleave功能,这样他们只能在淡入淡出操作完成后才能运行mouseenter/leave功能。我该怎么做 $(“#块”).mouseenter(函数(){ $(“#bocks2”).fadeOut();}); $(“#块”).mouseleave(函数(){ $(“#bocks2”).fadeIn(); }); 淡出/淡出具有完成回调 我已经更新了小提琴,以禁用fadeIn,如果我们正在积极淡出 var isFiring
$(“#块”).mouseenter(函数(){
$(“#bocks2”).fadeOut();});
$(“#块”).mouseleave(函数(){
$(“#bocks2”).fadeIn();
});代码>
淡出/淡出具有完成回调
我已经更新了小提琴,以禁用fadeIn,如果我们正在积极淡出
var isFiring = false;
$("#bocks").mouseenter(function(){
isFiring = true;
$("#bocks2").fadeOut(1000, function(){
isFiring = false;
});
});
$("#bocks").mouseleave(function(){
if(!isFiring){
$("#bocks2").fadeIn();
} else {
console.log('fire ignored');
}
});
试试这个:
var blocked = false;
function unblock() {
blocked = false;
}
$("#bocks").mouseenter(function(){
if (blocked) return;
blocked = true;
$("#bocks2").fadeOut(unblock);
});
$("#bocks").mouseleave(function(){
if (blocked) return;
blocked = true;
$("#bocks2").fadeIn(unblock);
});
您还可以删除事件侦听器并将其再次放入unblock()函数中。查看更新的fiddle
var mouseenterbusy = false;
var mouseleavebusy = false;
$("#bocks").mouseenter(function(){
if (mouseenterbusy == true) {
return;
}
mouseenterbusy = true;
$("#bocks2").fadeOut(function (){
mouseenterbusy = false;
});
});
$("#bocks").mouseleave(function(){
if (mouseleavebusy == true) {
return;
}
mouseleavebusy = true;
$("#bocks2").fadeIn(function (){
mouseleavebusy = false;
});
});
节流/去盎司可能更适合这里?我已经开始研究节流/去盎司,它似乎正是我需要的。