$("#prevPage").live("click",function(e) {
.................
});
例如,当用户已经点击prevPage时,里面的语句正在运行,如果用户立即点击它,它会再次触发。不过,我希望点击事件触发器只有在它内部的所有语句都完成执行后,如何实现这一点?谢谢。如何在执行时临时禁用点击功能?
$("#prevPage").live("click",function(e) {
.................
});
例如,当用户已经点击prevPage时,里面的语句正在运行,如果用户立即点击它,它会再次触发。不过,我希望点击事件触发器只有在它内部的所有语句都完成执行后,如何实现这一点?谢谢。如何在执行时临时禁用点击功能?
这个怎么样或者类似的东西:
<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>
简单的“盾牌”来阻止多呼叫方案。
如果像'settimeout'这样的异步执行,在“做工 - 无论你喜欢什么”时该怎么办。 – rab 2013-03-05 05:08:18
然后您推迟“unflag”(sample.isExecuting = 0),直到操作完成。你在异步操作中有回调函数吗? – 2013-03-05 05:26:29
async ajax或worker?我将提供一个代码示例。在所有异步场景中,有一些时刻需要同步执行某些操作。知道适用的应用程序是应用程序开发的先决条件。等待反馈 – 2013-03-05 05:28:32
使用jquery
$("#prevPage").unbind("click");
的解除绑定功能后,你的任务完成了
$("#prevPage").bind("click",function(){....your code here....});
谢谢。如果所有的声明完成后怎么办? – user782104 2013-03-05 04:50:52
你应该使用[die](http://api.jquery.com/die/),但在jQuery 1.9中知道'live'和'die'已被**删除**。 – elclanrs 2013-03-05 04:52:15
$(“#prevPage”)。bind(“click”,function(){}); – 2013-03-05 04:55:00
然后设置元件上的标志,以检查它是否可点击与否。
$("#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 ;
并将其设置为ture
当事件触发
prevPageEventTriggered = true;
,然后单击事件处理函数添加条件这个变量
$("#prevPage").live("click",function(e) {
if (prevPageEventTriggered) {
return false;
}
// your code goes here
// ....
});
如果它已完成执行,则可以将其设置为false
。希望这将有助于
解除绑定()将做的工作适合你。
替代方案可能像使用detach()。当您的进程正在执行分离按钮并且当您的进程执行完成时,请使用重新附加()来获取按钮。 我会建议的是使用unbind()。
使用.on()而不是.live(),因为.live()不推荐使用。 – Swarne27 2013-03-05 04:52:20
感谢提醒 – user782104 2013-03-05 04:54:13