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”),会弹出两次警报。因此, mouseenter 和 mouseleave 被触发两次。

这只发生在谷歌浏览器中。在 Internet Explorer 7、Firefox 3、OperaSafari中,这两个事件都只触发一次。

为什么会这样?

4

2 回答 2

8

我想这不能回答你的问题,但是这篇文章是在研究我自己的错误时出现的。原来问题是我无意中包含了两次外部javascript。

Just thought it would be worthwhile to document this for others who have the same problem. An obvious error that took a while to track down!

于 2011-10-28T01:14:35.803 回答
6

我认为警报实际上导致了 Chrome 中的额外事件。使用以下代码,我只看到一个事件。

$(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 回答