jQueryでクリック(click)での、連打を防止して アニメーションが終わるまでクリックボタン無効にする

jQueryでスライドやらギャラリーを自作していると
画面の移り変わり、画像の入れ替え等にアニメーションを使うことが多いです
アニメーションが動いている間に
ボタンをクリックされてしまうと、連続して実行されたり
中断されたりで、意図しない動きを起こすことがあります
見栄え的にもブサイクです
そこで、アニメーションが終わるまでそのボタンを無効にして
アニメーションが終わったら再び、ボタンとして機能するように clickが出来るようにします
jQueryで連打を防止する
var click_flg = true;
$(".next").on('click',function(){
if(click_flg){
//ボタンを一旦無効に
click_flg = false;
//実行内容
$(slide).animate(
{'left':0},
500,
function() {
//アニメーションが終わってから trueにするように指定
click_flg = true;
}
);
} else {
return false;
}
click_flgの値が true か false かで実行するかしないかをチェックします
初期値では var click_flg = true; で実行出来るようになっています
if を使って true か false かで動作を振り分けます
true ならば アニメーションを実行
false ならば何もしない
まずアニメーションを実行する前に クリックされたことで click_flg を false にします
これによって、クリックによるアニメーション実行を停止します
これで ボタンが無効になります
無効になったあとに アニメーションを実行します
そして、アニメーションが終わってから 再び click_flg を true にして
ボタンとしてクリック出来るように 有効にします。
ポイントはアニメーションの終わりとともに click_flg を true にしてやることです
幾つか同時に実行するアニメーションがある場合は、一番最後に終わるアニメーションに click_flg を true にするようにしてやれば OK
参考サイト
http://blog.livedoor.jp/iijima_web/archives/5521312.html


COMMENT