$("#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>
複数コールのシナリオをブロックする単純な「シールド」。
次に、要素にフラグを設定して、クリック可能かどうかを確認します。
$("#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;
}
});
unbind()があなたに代わって作業を行います。
別の方法は、 detach()を使用するようなものです。プロセスが実行されているときにボタンをデタッチし、プロセスが実行を終了したら、reattach ()を使用してボタンを元に戻します。私が提案するのは、unbind()を使用することです。
jqueryのアンバインド機能を使う
$("#prevPage").unbind("click");
あなたの仕事が終わった後
$("#prevPage").bind("click",function(){....your code here....});
イベントがトリガーした変数を設定する
var prevPageEventTriggered = false ;
ture
イベントがトリガーされたときに設定します
prevPageEventTriggered = true;
次に、クリックイベントハンドラー関数でこれの条件を追加します
$("#prevPage").live("click",function(e) {
if ( prevPageEventTriggered ) {
return false;
}
// your code goes here
// ....
});
実行が終了している場合は、に設定できますfalse
。これが役立つことを願っています