2009-09-15 11 views
14

ユーザーが何かをクリックすると、簡単なアニメーション効果を得るためにjQueryを使用しています。ただし、最初のアニメーションが完了する前に再度クリックすると、何も起こりません。最初のアニメーションが終了するまで待つ必要があります。jQuery - 割り込みアニメーション?

アニメーション処理を中断し、2回目のクリックが発生したときに最初から開始する方法はありますか?

ありがとうございました。

答えて

19

あなたはstop()方法

HTML使用することができます

<input type="button" value="fade out" id="start"> 
<input type="button" value="stop" id="stop"> 
<div style="background-color: blue; height: 100px;">Testing</div> 

JS:

$("#start").click(function() { $("div").fadeOut("slow"); }); 
$("#stop").click(function() { $("div").stop(); }); 

編集:上記のコードがテストされ、FF3で動作しているが。 5およびIE8

アニメーションを中断したい要素で使用します。

要素がアニメーションの途中でアニメーションを停止することを覚えておいてください。状況に応じて、停止後にCSSをリセットする必要があるかもしれません。

edit2: jQuery 1.7以降、いくつかの更新がありました。アニメーションキューを名前でグループ化できるようになりました。したがって、stop()メソッドは、最初のパラメータとしてブール値または文字列を受け入れます。ブール値の場合、クリア/クリアされません。すべてキュー。しかし、文字列を指定すると、そのキューグループ内のアニメーションのみがクリアされます。

+0

フェードアウトでは動作しません停止をリニューアルする前に()を停止することができますか?何も起こっていないようです.. – Dan

+0

バージョン1.7から、['.stop'](http://api.jquery.com/stop/)の構文が変更されているので、この回答は時代遅れです。 '$(" div ")。stop(true);'は動作するはずです。 – Dennis

+0

そうです、@Dennis、私は答えを更新しました。 – peirix

1

dequeueの求人と思われます。

2

あなただけのアニメーション

$("#start").click(function() { $("div").stop().fadeOut("slow"); }); 
関連する問題