0

ホバーイベントに関して奇妙な質問があります。要素 (.helpImg) にカーソルを合わせると、ホバー関数内でコードが 4 ~ 6 回実行されます。これをデバッグする方法がわかりません。誰にもアイデアがありますか?? どうもありがとう。

function test(){


console.log('testcall'); //this will only output 1 time

$('.helpImg').hover(function(){

         console.log('call'); //when hover the class, this will output multiple times (4~6 times randomly).          

         //the animation below will play multiple times too
          tooltip.css('display', 'block');
          tooltip.animate({ opacity: 0 }, 0);


          tooltip.animate({'opacity':'1','top':'-=10'},500);

        },function (){            
          $instance = $(this).css({'cursor': 'auto'});
          $('#tooltip-' + $instance.attr('id') ).hide(50);
          $(".js-tutorialTooltips").hide(50);
        })

}
4

1 に答える 1

0

ホバーイベントを複数回登録している可能性が最も高いため、これを試して簡単に修正してください。

$('.helpImg').not('.registered').addClass('registered').hover(function() { 
  //... your code

これにより、 class を持つ helpImg ノードが除外され、クラスが他のノードregisteredに追加registeredされ、関数が他のノードに登録されhoverます。

ただし、より良い解決策は、ホバー イベントが複数回登録される理由を調べることです。あなたのコードにはtest、ホバーイベントの登録を含む function があるようです。複数回呼び出すとtest、ホバーが複数回登録されます。

したがって、これに対処する最善の方法はconsole.log('register hover')、ホバー イベント ハンドラーの前に 1 回だけ呼び出されるようにすることです。

于 2012-08-21T20:21:45.217 に答える