jQuery 「エフェクト」視覚効果のキューを操作する

.animate()メソッドを連続して実行すると、それぞれのアニメーション効果は「キュー(queue)」に登録され、順に実行されます。キューはDOM要素ごとに1つまたは複数持てますが、複数のキューが必要になることはほとんどないでしょう。jQueryでは、特に指定しない限り、視覚効果には「fx」という名前のキューを使用します。.queue()メソッドは、引数を省略、またはキュー名だけを指定した場合、既存のキューの内容を引数の配列に含まれる関数で置き換えます。コールバック関数を指定した場合、キューの最後に指定した新しい関数を追加できます。.dequeue()メソッドは、キューから関数を1つ取り出し、実行します。.clearQueue()メソッドは、キューからすべての関数を削除します。アニメーション効果に関するキューに限定すれば、.stop(true)を実行するのとほぼ同義です。.delay()は、キューの関数と関数の間の待ち時間を指定します。

書式

$("対象要素").queue([キュー名]);
$("対象要素").queue([キュー名] 関数の配列 );
$("対象要素").queue([キュー名] コールバック );

$("対象要素").dequeue([キュー名]);
$("対象要素").clearQueue([キュー名]);
$("対象要素").delay(待ち時間,[キュー名]);
$('div').queue();
$('div').queue('fx', []);
$('div').queue('fx', function(){処理…});

$('div').dequeue();
$('div').clearQueue();
$('div').delay(3000);

サンプル

animate()メソッドはdiv要素を移動させる。.queue()メソッドで上に記述したアニメーションが終了したら次のアニメーションを実行するよう記述しているため、1つ目の.click()メソッド内の処理が完了した後に、.queue()メソッドが実行されます。動きとして、青い正方形のdiv要素が左から200px、上から100px移動した後div要素の背景色(backgroundColor)が赤色に変わります。「クリア」ボタンをクリックする.clearQueue()メソッドによりアニメーションが途中で終了し、再度スタートボタンをクリックするとまたはじめからアニメーションが行われます。

<html>
      <head>
        <meta charset="UTF-8">
        <title>テストページ</title>
        <script src="https://code.jquery.com/jquery-3.7.1.min.js" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script>
        <style>
          div{
            position: absolute;
            width: 50px;
            height: 50px;
            background-color: blue;
          }
        </style>
  </head>
  <body>
    <button id="start">スタート</button>
    <button id="clear">クリア</button>
    <div></div>
    <script>
    $(document).ready(function(){
      $("#start").on('click',function(e){
        $("div").css("backgroundColor", "blue");
        $("div").animate({left: '+=200px'},1500);
        $("div").delay(1000);
        $("div").animate({top: '+=100px'},400);
        $("div").delay(3000);

        $("div").queue(function(){
          $("div").css("backgroundColor","red");
          $("div").dequeue();
        });
      });
      $("#clear").on('click',function(){
        $("div").clearQueue();
      });
    });
    </script>
    </body>
</html>
実行結果
初期画面
実行結果
スタートボタンをクリックした後