jQueryのstopとfinishの使い方を見てみます。
stopで引数なしの場合
2点間を片道1.5秒かけて往復するアニメーションをsetIntervalで3.5秒毎に行う処理を作成して、アニメーション中にstopを実行するとどうなるかを試してみます。
HTML
<button id="btn">stop()</button> <div id="sample"></div>
CSS
#sample { position: absolute; top: 100px; left: 0; width: 100px; height: 100px; background: #cccccc; }
JavaScript
$(function() { setInterval(function() { $('#sample').animate({ left: 300 }, 1500).animate({ left: 0 }, 1500); }, 3500) $('#btn').on('click', function() { $('#sample').stop(); }); });
引数なしのデモページ
stopを実行した時点に行っているアニメーションが終了して、その場から次のキューが開始されます。
stop(false, false)
引数を設定する場合、第一引数はstop実行時に持っているキューをすべて削除するかどうか、第二引数は現在のアニメーションを最後までスキップするかどうかになります。
引数はそれぞれtrueかfalseで設定で、初期値はfalseです。
第一引数、第二引数共にfalseを設定してみます。
JavaScript
$(function() { setInterval(function() { $('#sample').animate({ left: 300 }, 1500).animate({ left: 0 }, 1500); }, 3500); $('#btn').on('click', function() { $('#sample').stop(false, false); }); });
stop(false, false)のデモページ
引数なしのときと同じ挙動になります。
stop(true, false)
第一引数にtrue、第二引数にfalseを設定してみます。
JavaScript
$(function() { setInterval(function() { $('#sample').animate({ left: 300 }, 1500).animate({ left: 0 }, 1500); }, 3500); $('#btn').on('click', function() { $('#sample').stop(true, false); }); });
stop(true, false)のデモページ
現在持っているキューをすべて削除して、その場で停止します。
setIntervalで再度実行されると、その場からアニメーションが開始されます。
stop(false, true)
第一引数にfalse、第二引数共にtrueを設定してみます。
JavaScript
$(function() { setInterval(function() { $('#sample').animate({ left: 300 }, 1500).animate({ left: 0 }, 1500); }, 3500); $('#btn').on('click', function() { $('#sample').stop(false, true); }); });
stop(false, true)のデモページ
stopを実行した時点で行っているアニメーションを最後までスキップして、次のキューが開始されます。
stop(true, true)
第一引数、第二引数共にtrueを設定してみます。
JavaScript
$(function() { setInterval(function() { $('#sample').animate({ left: 300 }, 1500).animate({ left: 0 }, 1500); }, 3500); $('#btn').on('click', function() { $('#sample').stop(true, true); }); });
stop(true, true)のデモページ
現在持っているキューをすべて削除して、stopを実行した時点で行っているアニメーションの最後までスキップして停止します。
setIntervalで再度実行されると、その場からアニメーションが開始されます。
finish()
stopに似た挙動をするfinishを試してみます。
JavaScript
$(function() { setInterval(function() { $('#sample').animate({ left: 300 }, 1500).animate({ left: 0 }, 1500); }, 3500); $('#btn').on('click', function() { $('#sample').finish(); }); });
finish()のデモページ
現在持っているキューをすべて破棄して停止します。
stopの場合はその場で停止するか、stopを実行した時点で行っているアニメーションの最後にスキップでしたが、finishの場合は現在持っているキューの最後にスキップします。
【参考サイト】
- .stop() | jQuery 1.9 日本語リファレンス | js STUDIO
- .finish() | jQuery 1.9 日本語リファレンス | js STUDIO
- [jQuery]こんな機能があったんだ。jQuery stop() | WEBプログラム覚書
- jQueryのstopメソッドとfinishメソッド – to-R
コメントが承認されるまで時間がかかります。