如何在事件结束之前暂时禁用 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/