12

しばらくの間、解決策を探していましたが、見つからないようです。.clearQueue()フィドルのようにJQueryを使用することも考えましたが、機能しません。

これがフィドルです。

明確にするために:sideToggle()を実行したいのですが、もう一度クリックして最初のslideToggle()がまだ終了していないとすぐに、最初のアニメーションを停止して上にスライドする必要があります。この.clearQueue()方法を使用すると、2回のクリックで機能しますが、たとえば3回クリックすると、ボックスが消え、高さがどういうわけか台無しになります。

4

3 に答える 3

21

jquery .stop()API を使用するとうまくいきます。

作業例。

于 2013-01-26T17:32:27.923 に答える
3

jQuery にネイティブではないアニメーションの停止と再開におそらく利用できるプラグインがあります: http://tobia.github.com/Pause/

アニメーションをそれほど細かく調整する必要がない場合は、.finish代わりに (jQuery 1.9 を追加)を使用できます.clearQueue。問題は、アニメーションが突然終了することです。これは少し奇妙に見えます。

問題は、jQueryが元の高さを追跡しないことです($("div").data('originalHeight', $("div").height())これを自分で行うだけです)。これにより、アニメーションの途中でキューをクリアして高さが台無しになるのを防ぐことができます。

http://jsfiddle.net/xj3Py/3/

3 回以上のクリックでジャンプするため、これはまだ完全ではありませんが、少なくとも高さは台無しにはなりません。

于 2013-01-26T17:34:46.240 に答える