jQueryで要素をアニメーションさせている時に、別のアニメーションを発生させないようにする方法をメモ。
通常時のサンプルコード
HTML
#buttonをクリックすると、.boxが移動するサンプルです。
<button id="button">アニメーション実行</button> <div class="box"></div>
CSS
.box {
	position: absolute;
	top: 50px;
	left: 50px;
}
JavaScript
$(function() {
	$(document).on('click', '#button', function() {
		$('.box').animate({
			top: 100,
			left: 300
		}, 1000).animate({
			top: 50,
			left: 50
		}, 1000);
	});
});
この場合、アニメーション中にボタンをクリックすると、クリックした回数だけアニメーションが行われます。
 
アニメーションしていない要素を対象にする
JavaScript
$(function() {
	$(document).on('click', '#button', function() {
		$('.box').not(':animated').animate({
			top: 100,
			left: 300
		}, 1000).animate({
			top: 50,
			left: 50
		}, 1000);
	});
});
$(‘.box’).not(‘:animated’)とすることで、アニメーションしていない.boxに対してアニメーションを指定する形になるため、動いている間は対象から外されます。
 
要素がアニメーション中かどうかを確認する
JavaScript
$(function() {
	$(document).on('click', '#button', function() {
		if(!$('.box').is(':animated')){
			$('.box').animate({
				top: 100,
				left: 300
			}, 1000).animate({
				top: 50,
				left: 50
			}, 1000);
		}
	});
});
if文で.boxがアニメーション中でないかを見て、アニメーション中でない場合にアニメーションを実行します。
 
アニメーションを変数で管理する
JavaScript
$(function() {
	var animateFlag = false;
	$(document).on('click', '#button', function() {
		if(!animateFlag) {
			animateFlag = true;
			$('.box').animate({
				top: 100,
				left: 300
			}, 1000).animate({
				top: 50,
				left: 50
			}, 1000, function() {
				animateFlag = false;
			});
		}
	});
});
animateFlagがfalseの時だけアニメーションを実行するようにします。
1回実行されるとanimateFlagをtrueにして、完了時に再びanimateFlagをfalseに戻します。

コメントが承認されるまで時間がかかります。