2009-04-07 2 views
94

私はページ上のいくつかの要素を移動しようとしていますが、アニメーションが発生している間は、elemntに "overflow:hidden"を適用し、アニメーションが完了すると "overflow"を "auto" 。私はjQueryのを知っている要素がアニメーション化されているかどうかをjQueryでどのように調べるのですか?

は、いくつかの要素がアニメ化されているかどうかを決定するユーティリティ機能を持っていますが、私は

+2

このタスクにコールバックを使用します。 – Mork0075

答えて

189
if($(elem).is(':animated')) {...} 

詳細情報ドキュメント内のどこにでもそれを見つけることができません。http://docs.jquery.com/Selectors/animated


Or:

$(elem) 
    .css('overflow' ,'hidden') 
    .animate({/*options*/}, function(){ 
     // Callback function 
     $(this).css('overflow', 'auto'); 
    }; 
+0

はい、ありがとう、ありがとう。どうすればそれを見逃すことができますか?ちょっと古いですよね –

+0

コールバックで "overflow:auto"をプログラミングしてCSSスタイルを上書きしたくない場合は、単純に '.css( 'overflow'、 '')'を使用してください。空の文字列を渡すと、通常、そのプロパティは要素のスタイルから完全に削除されます。これが文書化された動作であるかどうかはわかりませんが、それは非常に便利なトリックです。 –

+0

私はそれがCSSアニメーションをサポートしているとは思わない。 – Gqqnbig

5

「!」:

if (!$(element).is(':animated')) {...} 
+0

これは非常に真実ではありません... jqueryのis is not 'not'。 jqueryオブジェクトからフィルタリングされた要素を削除します。 アニメーション化されていないオブジェクトをチェックしたい場合、 'if(!$(element).is( ':animated')){...}' – amosmos

+1

@amosmos回答が編集されコミュニティが承認しました。それが正しい場所に戻ります。 – Bill

+1

偉大な、今はそれは受け入れられた答えの複製です。それはコミュニティが承認したという意味ですか? – amosmos

-1

あなたがcssアニメーションを使用して、特定のclass nameを使用してアニメーションを割り当てている場合は、その後、あなたはこのようにそれを確認することができます。何かがアニメーションされていない場合、あなたは簡単に追加することができ、テストする

if($("#elem").hasClass("your_animation_class_name")) {} 

アニメーションが終了した後、アニメーションを処理しているクラス名を削除していることを確認してください。アニメーションが終了した後

このコードはclass nameを除去するために使用することができます。

$("#elem").on('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', 
function(){ 
     $(this).removeClass("your_animation_class_name"); 
}); 
+0

OPはjQueryアニマトンを使用しています。 –

+0

は代替案を示唆しています。そしてあなたはアニメーションを意味しましたか? – KeepMove

+0

はい、私はアニメーションを意味しました。あなたの答えは完全に話題外です。 –

0

あなたは、アニメーションの要素にCSSを適用したい場合は、あなたが:animated擬似セレクタを使用して、このようにそれを行うことができ、

$("selector").css('overflow','hidden'); 
$("selector:animated").css('overflow','auto'); 

ソース:https://learn.jquery.com/using-jquery-core/selecting-elements/

0
$('selector').click(function() { 
    if ($(':animated').length) { 
    return false; 
    } 

    $("html, body").scrollTop(0); 
}); 
+0

このコードは質問に答えるかもしれませんが、どのようにして問題が解決されたのか、および/または理由が解明されれば、回答の長期的な価値は向上します。質の高い回答を提供するためには、この[how-to-answer](http://stackoverflow.com/help/how-to-answer)をお読みください。 – thewaywewere