Javascript 禁用 onclick 事件直到它的事件完成

标签 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>

编辑: 我试过这种方式:但它不会解除对点击事件的阻止

$("#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>

最佳答案

好吧,您可以创建一个变量,告诉您的函数在它为真时忽略它;

var isIgnore = false;
$("#btn").click(function(){

      if(isIgnore)
      return;

       isIgnore = true;
        var obj = $(this);
        var action = obj.prop('onclick');
        obj.prop('onclick','');
        whenDoStuffFinishes.(function(){
          obj.prop('onclick',action);
         isIgnore = false;
        });
    });

此代码未经过测试,但我认为它可以工作。

关于Javascript 禁用 onclick 事件直到它的事件完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22933819/

相关文章:

javascript - 从 javascript 到 html 的元素列表

javascript - 如何在多个文件中设置mocha测试用例的执行顺序

jquery - 使用 jquery 根据列表值更改 div

javascript - 从 javascript 将 Click 事件放置在 html 中的 anchor 标记上?

delphi - TModel3D 的 OnClick 事件

android - fragment 添加动画播放时禁用点击

javascript - JS如何正确替换元素?

用于深度优先搜索的 Javascript 扩展运算符

javascript - 自定义 css 选择框的几个问题 -

javascript - 当一种表单中有多个 jquery 比率时,如何命名输入?