如何在执行时临时禁用click功能?

时间:2013-03-05 04:48:36

标签: javascript jquery javascript-events mouseevent

 $("#prevPage").live("click",function(e) {
.................
});

例如,当用户已经点击了prevPage时,其中的语句正在运行,如果用户立即点击它,它将再次触发。但是,我想只在事件内部的所有语句都完成执行后才会触发click事件,如何实现呢?感谢。

5 个答案:

答案 0 :(得分:2)

这个或类似的东西怎么样:

<script type="text/javascript">
    // disable command while function is being executed.
    var sample = { 
        isExecuting : 0, 
        doWork : function (e) { 
            if (sample.isExecuting === 1) return;
            sample.isExecuting = 1;
            // do work -- whatever you please
            sample.isExecuting = 0; // say: I'm done!
        }
    };
    // live or bind
    $("#prevPage").bind("click",function(e) {
         sample.doWork(e);
    });
</script>

简单的“屏蔽”来阻止多次调用场景。

答案 1 :(得分:1)

然后在元素上设置一个标志以检查它是否可点击。

$("#prevPage").on("click",function(e) {

  e.preventDefault();

  //get the clickable attribute
  //if it's not existent, its undefined hence "false"
  var unclickable = this.unclickable;

  //if it's not unclickable (it's clickable)
  if(!unclickable){

    //make the flag unclickable
    this.unclickable = true;

    //do stuff

    //reset it back the way it was after operations
    this.unclickable = false;
  }


});

答案 2 :(得分:0)

使用jquery的unbind函数

$("#prevPage").unbind("click");
任务完成后

$("#prevPage").bind("click",function(){....your code here....});

答案 3 :(得分:0)

设置事件触发的变量

var prevPageEventTriggered = false ;

并在事件触发时将其设置为ture

prevPageEventTriggered = true;

然后在单击事件处理函数

中添加条件
$("#prevPage").live("click",function(e) {

        if ( prevPageEventTriggered ) {
                return false;
        }

        // your code goes here
        // ....
});

如果已完成执行,您可以将其设置为false。希望这会有所帮助

答案 4 :(得分:0)

  • unbind()将为您完成工作。

  • 替代方法可能就像使用 detach()一样。当您的进程正在执行时,请分离按钮,当您的进程执行完成时,使用 reattach()返回按钮。 我建议使用 unbind()