2

jQuery でいくつかのイベント バインディングを試しています。ドキュメントに次の簡単なコードを用意しました。

$(document).ready(function() {
    $("p a").each(function(i, selected){
        $(selected).hover(
            function(event) { alert('over: ' + event.type); },
            function(event) { alert('out: ' + event.type); });
        }
    )
});

そのため、段落内のリンク (セレクターが "p a") の上にマウスを移動すると、アラートが 2 回ポップアップします。したがって、mouseenter と mouseleave は 2 回起動されます。

これは Google Chrome でのみ発生します。Internet Explorer 7、Firefox 3、Opera、およびSafariでは、両方のイベントが 1 回だけ発生します。

なぜこうなった?

4

2 に答える 2

8

これはあなたの質問に答えていないと思いますが、この投稿は自分のバグを調査しているときに出てきました。問題は、外部の JavaScript を誤って 2 回含めたことであることが判明しました。

同じ問題を抱えている他の人のためにこれを文書化する価値があると思いました. 追跡に時間がかかった明らかなエラーです。

于 2011-10-28T01:14:35.803 に答える
6

どういうわけか、アラートが実際にChromeで余分なイベントを引き起こしていると思います。次のコードでは、1 つのイベントしか表示されません。

$(document).ready(function() {
  $("p a").each(function(i, selected){
    $(selected).hover( 
      function(event) { $("p").append('<br>over: ' + event.type); }, 
      function(event) { $("p").append(' out: ' + event.type); });
    }
  )
});
于 2009-02-28T17:06:14.860 に答える