0

jsFiddle
jquery イベントとアニメーションで実行されるカスタマイズされたドロップダウン メニューを使用します。
この問題は、mouseenter を使用してドロップダウンを数回アクティブにしたときに発生し、その結果、メニューが下にスライドしてから上に数回スライドします。.stop(true) を追加して修正しようとしましたが、成功しましたが、このような他の問題が発生しました 私はそのアドバイス(jsFiddle Here)に従いましたが、それはより魅力のない問題を引き起こします。

関数が重複して起動するのを停止する方法が必要ですが、ユーザーが.mouseleave

をトリガーした場合は、「スライドダウン」をすぐに停止してから「スライドアップ」することができます。成功 :(
アイデア、アドバイス、批判は大歓迎です。

4

1 に答える 1

1

基本的には、イベント ハンドラーの実行を遅らせることになります。

var mouseoverTimer = null;    

$('.elem').mouseover(function(){

   clearTimeout(mouseoverTimer); //ignore previous trigger

   mouseoverTimer  = setTimeout(function(){ //wait to execute handler again
     //execute actual handler here
   }, 10);
});

指定された間隔内に同じハンドラーが呼び出された場合、保留中の実行はキャンセルされ、その間隔内に後続のトリガーがないことを期待して、10 ミリ秒後に実行するために再度キューに入れられます。

于 2012-08-25T04:54:36.247 に答える