1

JQuery UI からバウンス アニメーションを使用しています。

$('.mydiv').mouseover(function () {
      $(this).effect("bounce", { times:4 }, 300);
});

そして、それらの上にカーソルを合わせると、アニメーションの「キューイング」という古い問題があります(つまり、マウスをdivの上にすばやく4回移動すると、アニメーションが4回以上発生します)。

通常、私は.stop()それに対処するために使用します。

$('.mydiv').mouseover(function () {
      $(this).stop().effect("bounce", { times:4 }, 300);
});

しかし、この場合、それは何の違いもありません。誰かが解決策を知っていますか?

を使用.stop(true)すると、次のようにバウンスを完了せずにアニメーションが停止することを意味します。

ここに画像の説明を入力

4

3 に答える 3

8

メソッドで:animatedセレクターを使用して、要素が既に進行中のアニメーションを持っているかどうかをテストします。その場合は、バウンスを開始しないでください。.is()

$('.mydiv').mouseover(function () {
    var $this = $(this);
    if (!$this.is(":animated"))
      $this.effect("bounce", { times:4 }, 300);
});
于 2012-08-07T01:01:24.670 に答える
0

はい、.stop() を使用して jQueryUI (コア jQuery ではない) アニメーションを停止 (終了) してデキューすることはできません。:)

実行する順序を変更するのは単なる「トリック」です。だから、これを試してください:

$('button').on('click', function(){ $(this).stop(false, true).stop(true, false).animate('bounce') });

于 2014-05-29T18:59:33.100 に答える
0

.stop()は 2 つのパラメーターを受け入れますが、どちらもデフォルトで false です。

param1 またはclearQueue-- があり、その背後にある他のすべてのアニメーションをキューからクリアし、アニメーションをそのトラックで停止します。

次に、param2、またはjumpToEnd- があり、アニメーションをすぐに終了します。

設定した場合.stop(true)、意図したとおりに動作するはずです。

于 2012-08-07T00:36:25.500 に答える