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

例如,当用户已经点击了prevPage,里面的语句正在运行,如果用户立即点击 ,它会再次触发。但是,我希望只有在它里面的所有语句都完成执行之后才触发点击事件,如何实现呢?

4

5 回答 5

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>

简单的“屏蔽”来阻止多呼叫场景。

于 2013-03-05T04:56:01.710 回答
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;
  }


});
于 2013-03-05T04:52:21.080 回答
0

使用jquery的unbind功能

$("#prevPage").unbind("click");

你的任务完成后

$("#prevPage").bind("click",function(){....your code here....});
于 2013-03-05T04:50:24.903 回答
0

设置您的事件触发的变量

var prevPageEventTriggered = false ;

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

prevPageEventTriggered = true;

然后在单击事件处理函数中为此添加条件

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

        if ( prevPageEventTriggered ) {
                return false;
        }

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

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

于 2013-03-05T04:54:55.777 回答
0
  • unbind()将为您完成工作。

  • 另一种方法可能是使用detach()。当您的进程正在执行分离按钮并且当您的进程完成执行时,使用 reattach ()来取回按钮。我建议使用unbind()

于 2013-03-05T05:25:38.867 回答