アニメーションの実行は1回のアニメーション処理が終わってから次のアニメーションが実行されます。例えば、クリックイベントを使ってコンテンツをアニメーション付きで表示・非表示の処理をした場合、アニメーションをしている途中で表示・非表示の切り替えを何度も繰り返してクリックすると、クリックした回数分のアニメーションが終わるまで待つ必要があります。このような不要なイベント発生を防ぐ方法を紹介します。

:animatedセレクターでイベントを制御

「:animated」というセレクターを使うことによって、無駄なアニメーション処理を防ぐことができます。

$(function() {
  $("#show").click(function() {
    $("img:not(:animated)").show("slow");
  });
  $("#hide").click(function() {
    $("img:not(:animated)").hide("slow");
  });
});

このようにすることで、img要素がアニメーションしていない場合だけshow()とhide()が実行されるようになり、アニメーション中は実行されません。「not()」という否定疑似クラスを使ってアニメーション中という条件を除外しています。

アニメーションの動作に何か不具合があった場合には、:animatedセレクターを使ってみるとクリアできるかもしれませんので、試してみてください。

その他の記事