Javascript 如何在执行单击功能时临时禁用该功能?
例如,当用户已单击prevPage时,其中的语句正在运行,如果用户立即单击它,它将再次触发。但是,我希望click事件触发器只有在其内部的所有语句都完成执行后才能执行,如何实现这一点?谢谢。使用jquery的解除绑定功能Javascript 如何在执行单击功能时临时禁用该功能?,javascript,jquery,javascript-events,mouseevent,Javascript,Jquery,Javascript Events,Mouseevent,例如,当用户已单击prevPage时,其中的语句正在运行,如果用户立即单击它,它将再次触发。但是,我希望click事件触发器只有在其内部的所有语句都完成执行后才能执行,如何实现这一点?谢谢。使用jquery的解除绑定功能 $("#prevPage").live("click",function(e) { ................. }); 任务完成后 $("#prevPage").unbind("click"); 然后在元素上设置一个标志,以检查它是否可单击 $("#prevPag
$("#prevPage").live("click",function(e) {
.................
});
任务完成后
$("#prevPage").unbind("click");
然后在元素上设置一个标志,以检查它是否可单击
$("#prevPage").bind("click",function(){....your code here....});
设置事件触发的变量
$("#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;
}
});
var prevPageEventTriggered = false ;
并在事件触发时将其设置为true
$("#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;
}
});
var prevPageEventTriggered = false ;
然后在click事件处理程序函数中为此添加条件
prevPageEventTriggered = true;
如果它已完成执行,则可以将其设置为
false
。希望这会有所帮助这个或类似的东西怎么样:
$("#prevPage").live("click",function(e) {
if ( prevPageEventTriggered ) {
return false;
}
// your code goes here
// ....
});
//在执行函数时禁用命令。
变量样本={
i执行:0,
doWork:函数(e){
if(sample.isExecuting==1)返回;
sample.i执行=1;
//做你想做的事
sample.isExecuting=0;//说:我完成了!
}
};
//生存或束缚
$(“#prevPage”).bind(“单击”,函数(e){
样本。道尔克(e);
});
简单的“屏蔽”来阻止多个呼叫场景。- 解除绑定()将为您完成这项工作
- 另一种方法可能类似于使用detach()。当您的进程正在执行时,请分离按钮,当您的进程发现正在执行时,请使用重新连接()将按钮取回来。 我建议使用unbind()
live
和die
已在jQuery 1.9中删除。$(“#prevPage”).bind(“单击”,函数(){});使用.on()而不是.live(),因为.live()正在弃用。如果在“做工作--随你所愿”上有类似于settimeout
的异步执行,该怎么办?然后将“unflag”(sample.isExecuting=0)延迟到操作完成。在异步操作中有回调函数吗?异步ajax还是worker?我将提供一个代码示例。在所有异步场景中,有时某些操作需要同步进行。了解其适用范围是应用程序开发的先决条件。等待反馈