まず、お読みいただきありがとうございます。
関数の実行を停止するのに問題があります。何をしたいのか、どのようにしようとしているのかを説明しようと思います。
たとえば、要素にいくつかのイベントをバインドa or button
し、ユーザーがそれを再度クリックしないようにしたいのですが、クリックできることを意味しますが、すべてのアクションはしばらく呼び出されません (たとえば、1 秒)。
そのため、ここにいくつかの例を示します。
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);
}
});
しかし、問題は委任された関数が何らかの方法で実行されることです ((
誰か助けてください、それはより良い練習ですか?またはその方法を修正する方法は?