0

slideDown() のような Jquery アニメーションを実行すると、いくつかの要素固有の css プロパティが特定の間隔で更新されるように設定されているように見えます。アニメーションが完了すると、これらのプロパティは設定解除され、表示プロパティは単純に auto またはに設定されます。なんでもいい。少なくとも firebug では、これらの一時的なプロパティは表示されなくなりました。

私が遭遇した問題は、stop() でスライド ダウンを停止するシナリオです。その後、要素には現在の一時的な css 値が残されます。しなければならないのでこれは問題ありませんが、少し時期尚早にスライドを元に戻すことにしたため、スライドダウンを停止したとしましょう。次のようになります。

$(this).slideDown(2000)
//The below events is not in queue but will rather start execute almost 
simultaneously as the above line. (dont remember the exact syntax)
$(this).delay(1000).stop().slideUp(2000)

上記のコードはあまり意味をなさないかもしれませんが、ポイントは次のとおりです
。1 秒間下にスライドした後、アニメーションは停止し、上にスライドし始めます。魅力のように機能します。

しかし!!!そして、ここに問題があります。スライドが戻ると、要素の css プロパティは、slideDown() アニメーション (stop() が呼び出されたとき) に 1000 ミリ秒あった正確な値にリセットされます。ここで、次を実行しようとすると:

$(this).slideDown(2000)

以前のslideDownが中止されたポイントまでスライドダウンし、それ以上半分の速度ではありません(約半分の高さで同じ時間を使用するため)。これは、css プロパティが表示どおりに保存されたためです。しかし、それは特に望んでいるわけではありません。もちろん今回はずーっとずらしていきたいです。

すべてがすぐに壊れる可能性があると予測するのは難しい UI の相互作用が原因です。使用するアニメーションが長いほど、このようなことが起こるリスクが高くなります。

これはバグと見なされますか、それとも何か間違ったことをしていますか? それとも、サポートされていない機能なのでしょうか?

コールバック関数を使用して css プロパティをリセットできると思いますが、使用するアニメーションに応じて、異なる css プロパティを使用してレンダリングするため、背中を覆うことはそれほど派手なソリューションにはなりません。

4

3 に答える 3

0

これはjQuery1.7.2で修正されたバグでした:http://bugs.jquery.com/ticket/8685

于 2012-05-11T20:12:45.093 に答える
0

slideUpslideDownをに置き換えてみてくださいanimate

http://api.jquery.com/animate/

このようにして、何をすべきかを明示的に伝えます。

于 2010-12-25T23:00:01.983 に答える
0

これは予想される (ただし望ましくない) 動作です... を.slideDown()完全な高さにするには、 を使用して、完成した位置からスライドを開始し.stop(true, true)、アニメーションを完了します。アニメーションの最後までスキップするように指示する2 番目のtrue引数は、ここで重要な部分であるため、スライドして戻る「最終」値は、スライドが停止したときの高さではなく、完全な高さなどです。 .

于 2010-12-25T23:02:50.923 に答える