首先,感谢您阅读。
我确实有问题要停止执行功能,我会尝试解释我想做什么以及我是如何做到的。
例如,我绑定元素a or button
上的一些事件,我想用户不会再次点击它,我的意思是他可以点击它,但是所有的动作都不会被调用一段时间(比如一秒钟)。
所以,这里有一些例子:
in html
1st example
<ul>
<li><a href="some url" class='button'>Click me</a></li>
<li><a href="some url" class='button'>Click me</a></li>
<li><a href="some url" class='button'>Click me</a></li>
</ul>
2nd example somewhere else:
<section id='someid'>
some info
some articles - doesn't matter
<button class='button iLoadComments'>Load more comments</button>
</section>
在javascript中:
$("ul").on("click","a.button",function(){
... here some code or ajax request, whatever
return false;
});
$("section").on("click","iLoadComments",function(){
... some ajax request
return false;
})
我想不允许执行它。 我希望通过1个函数覆盖所有代码..
所以,我做了什么:全局我定义了新的事件监听器并将属性disabled
添加到该元素
$("body").on("mousedown", ".button", function(e){
var $this=$(this);
if ($this.attr("disabled")) {
var event = e || window.event;
if (event.stopPropagation) {
event.stopPropagation();
} else {
event.cancelBubble = true;
}
event.preventDefault();
setTimeout(function () {
$this.removeAttr("disabled");
}, 1000);
return false;
}else{
$this.attr("disabled", true);
}
});
但问题是删除功能会以任何方式执行((
有人可以帮忙吗,这是更好的做法吗?或纠正这种方式?
答案 0 :(得分:3)
var click_enabled = true;
$("body").on("click",".button",function(){
if (click_enabled) {
click_enabled = false;
setTimeout(function() {
click_enabled = true;
}, 1000);
}
return false;
});
$("ul").on("click","a.button",function(){
if (!click_enabled)
return false;
//... here some code or ajax request, whatever
});
$("section").on("click",".iLoadComments",function(){
if (!click_enabled)
return false;
//... some ajax request
});
答案 1 :(得分:2)
您可以使用.one
代替.on
。这样,您的处理程序将只运行一次:
$("ul").one("click","a.button",function(){
//... here some code or ajax request, whatever
return false;
});