1

皆さんこんにちは、これはスタックオーバーフローに関する私の最初の質問
です。メニューを管理するための簡単なコードを作成しました。これがコードです。
http://jsfiddle.net/corvallo/97x89/5/

「gestione news」をクリックすると、すべてのメニュー要素が異なる遅延で左にスライドし、テキスト「Articoli」を含む画像 (jsfiddle では表示されない) が表示されます。
画像をクリックすると、テキスト「articoli」がフェードアウトし、メニュー要素が遅延して以前と同じ位置に再表示されます。
したがって、問題は、最初のアニメーション (メニュー要素の左へのスライド) を 4 ~ 5 回試行すると速度が低下し、もう一度試行するとアニメーションがどんどん遅くなることです。

問題が delay() 関数にあるとは思いませんが、$.each() にあるのではないでしょうか。間違っているかもしれません。
誰かがこれで私を助けることができますか?
前もって感謝します。

4

2 に答える 2

1

アニメーションは、明らかに仕事を終えた後もしばらくはまだ実行されているようです。以下を使用して、FirebugまたはChromeで停止するタイミングを確認します。

$(this).animate({"marginLeft":"0px"},"slow", function(){console.log("anim stopped");});

なぜまだ実行されているのかわかりませんが、次のような新しいアニメーションを実行する前に停止することができます。

$(this).stop().animate({"marginLeft":"0px"},"slow");

これにより、発生している速度低下の問題が修正されたようです。

于 2012-04-05T23:08:04.760 に答える
0

メニューを div に配置します。各要素に対して foreach を実行する代わりに、メインの div をアニメーション化します。

アニメーションのタイミングを開始するのを待つだけなので、遅延が問題を引き起こしているはずはありませんが、一度に多くのアニメーションを実行すると、1 つではなく複数の内部タイマーが開始され、問題が発生する可能性があります。

于 2012-04-05T22:56:09.723 に答える