4

プラグインで jQuerys animate 関数を使用しています。多くの要素で、要素ごとに異なる期間がシミュレートされています。アニメーションが実行されているかどうか、またはアニメーションがまったくないかどうかを知りたいです。だから私はこれを思いついた:

if( $div1.is(':animated') || $div2.is(':animated') || $div3.is(':animated') ) return true;
else return false;

またはこれ:

if( $div1.add($div2).add($div3).is(':animated') ) return true;
else return false;

どっちがいい???

他の方法を知っていますか???

$("*").is(':animated');すべてのアニメーションと他のプラグインのアニメーションをチェックするため、このコードは必要ありません。

3つだけでなく、多くの要素があることに注意してください。

読んでくれてありがとう...

4

3 に答える 3

7

読んで考えるコードが少ないので、私は2番目を選びます。

一般的にはDRYの方が優れています。

それをリファクタリングすることもできます...

return $div1.add($div2).add($div3).is(':animated');
于 2011-05-22T23:53:23.917 に答える
4

おそらく、アニメーションをチェックしたい div にクラスを配置できますか?

if ($(".myclass").is(":animated")) return true;
于 2011-05-22T23:54:52.887 に答える
1

サイクルを節約するために、おそらく明示的に保ちます。アニメートするたびに、 を増やしますnumberOfTotalAnimations。アニメーション コールバックの最後で、デクリメントします。それは、ここで本当にスピードが必要な場合です。それ以外の場合は、@Ben のクラス提案が気に入っています。

リクエストに応じて、例を使用して更新します。

var numberOfTotalAnimations = 0;

numberOfTotalAnimations++;
$('#thing').animate({
    opacity: 0.1
  }, 2000, function() {
    numberOfTotalAnimations--;
  });

if (!numberOfTotalAnimations) {
  console.log("Everything's quiet.");
} else {
  console.log("Something's moving.");
}

きれいではありません。エラーが発生しやすくなります (カウンターをインクリメントまたはデクリメントするのを忘れる可能性があるという点で) - しかし、高速です。

于 2011-05-22T23:55:50.017 に答える