JavaScript / jQuery:事件被触发两次

时间:2009-02-28 16:35:44

标签: javascript jquery events google-chrome

我正在尝试使用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被解雇两次。

这只发生在Google Chrome中。在Internet Explorer 7中,Firefox 3,OperaSafari这两个事件仅被触发一次。

为什么会这样?

2 个答案:

答案 0 :(得分:8)

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

只是认为将其记录给有相同问题的其他人是值得的。一个明显的错误,需要一段时间来追踪!

答案 1 :(得分: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); });
    }
  )
});