Javascript 禁用 onclick 事件,直到该事件完成

use*_*976 5 javascript jquery onclick jquery-events

如何暂时禁用onclick活动直到活动结束?

到目前为止,这就是我想出的全部:

<script>
 function foStuff(a){
     //no modifications here to be done, just some code going on
 }

 $(document).ready(function(){
    $("#btn").click(function(){
        var obj = $(this);
        var action = obj.prop('onclick');
        obj.prop('onclick','');
        whenDoStuffFinishes.(function(){ //when do stuff finishes is what i need to get
          obj.prop('onclick',action);
        });
    });
 });
</script>
<div id="btn" onclick="doStuff(500)">

</div>
Run Code Online (Sandbox Code Playgroud)

编辑:我已经尝试过这种方式:但它并没有解锁点击事件

$("#btn").click(function(){
        var obj = $(this);
        obj.off('click');        
        $.when( doStuff(500) ).then( function(){
            obj.on('click');    //   it actually comes here, but click event is being unset
        } );
        
    });  
<script>
$(document).ready(function(){});
</script>
<div id="btn">

</div>
Run Code Online (Sandbox Code Playgroud)

Stp*_*ane 0

只需引用处理程序,并在执行操作之前将其分离,然后在最后再次附加它......

 $(document).ready(function () {
    var handler = function () {
        var obj = $(this);
        obj.off('click');
        whenDoStuffFinishes.(function () {
            obj.click(handler);
        });
    };
    $("#btn").click(handler);
 });
Run Code Online (Sandbox Code Playgroud)