0
   $("#LeftArrow_Wrapper, #RightArrow_Wrapper").hover(
      function () {
          $("#LeftArrow_Button, #RightArrow_Button").stop(true,true).show();
      }
   );

マウスをその上に置くと、矢印が表示されますが、マウスを複数回スワイプすると、ショー機能がキューに入れられます。停止するとアニメーションがカットされるだけで、助けていただければ幸いです。

コードをこれだけに変更しました

 $("#LeftArrow_Button, #RightArrow_Button").hover(function () {
                $(this).stop(true,true).show();
            });

まだキューイングの問題が発生しています

さて、問題を修正しました。返信ありがとうございます。Stopは、思ったとおりに機能しました。私は単なるドープであり、間違った.jsファイルを更新していました。フェイスパーム

4

2 に答える 2

0

メソッドは.stop、選択した要素のアニメーションを停止します。間違った要素のアニメーションを停止しています:

$("#LeftArrow_Wrapper, #RightArrow_Wrapper").hover(function () {
    $(this).stop(true,true).show();
});
于 2012-12-11T04:25:37.150 に答える
0

あなたの状況をどのように理解できるかに基づいて、明確にする必要があるいくつかのこと:

(1)は実際には 2 つです。通常、指定 た要素に.hover()アクセスするときに実行する関数コールバックと、. 1 つだけを指定すると、両方に対して同じように実行されます。mouseovermouseout

$(element).hover(
    function () {
        // to execute on mouseover
    },
    function () {
        // to execute on mouseout
    }
);

(2)イベント ハンドラ内で、イベントが発生したと思われる要素が によって参照されthisます。ほとんどの場合、要素を再度選択する必要は事実上ありません。

$('#LeftArrow_Wrapper, #RightArrow_Wrapper').hover(function () {
    $(this).stop(true, true).show();
});

(3) アニメーション.stop()を停止します。単独で呼び出しても要素の jQuery アニメーションはトリガーされませんが (瞬間的であるため)、たとえば を呼び出すとトリガーされます。jQuery は一定期間にわたってフェード + サイズを実行するためです。.show().show(duration)

だから何?

全体として、元のコードで起こっていることは、要素にマウスを合わせると、 (元の(2)のため)との両方 が表示されますが、マウスを外したときにも同じことが行われるということです。((1)を参照)に対してコールバックを 1 つしか提供しないためです。#LeftArrow_Wrapper#RightArrow_Wrapper.hover()

停止するアニメーションがないため、への呼び出し.stop()が役に立たないことは役に立ちません (このコードの外側で何か他のことが起こっていない限り --- への呼び出しを停止することはほとんどありません.show())。

あなたの質問は最も詳細ではないので、あなたがやりたいと思うことは次のようなものです:

 $('#LeftArrow_Wrapper, #RightArrow_Wrapper').hover(
    function () {
        $(this).show();
    },
    function () {
        $(this).hide();
    },
 );
于 2012-12-11T04:36:36.483 に答える