Javascript 暂时禁用JS交互?

Javascript 暂时禁用JS交互?,javascript,jquery,Javascript,Jquery,我希望以下功能的运行方式能够防止用户滥发mouseenter、mouseleave功能,这样他们只能在淡入淡出操作完成后才能运行mouseenter/leave功能。我该怎么做 $(“#块”).mouseenter(函数(){ $(“#bocks2”).fadeOut();}); $(“#块”).mouseleave(函数(){ $(“#bocks2”).fadeIn(); }); 淡出/淡出具有完成回调 我已经更新了小提琴,以禁用fadeIn,如果我们正在积极淡出 var isFiring

我希望以下功能的运行方式能够防止用户滥发mouseenter、mouseleave功能,这样他们只能在淡入淡出操作完成后才能运行mouseenter/leave功能。我该怎么做

$(“#块”).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;                     
    });     
});

节流/去盎司可能更适合这里?我已经开始研究节流/去盎司,它似乎正是我需要的。