2009-02-28 2 views
2

Я пытаюсь несколько привязок событий с JQuery, и у меня есть этот простой код в моем документе готовый:JavaScript/JQuery: событие дважды выстрелил

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

Так что, когда я двигаю мышь на ссылку Thats внутри Параметр (селектор «pa») вызывает всплывающие предупреждения дважды. Итак, mouseenter и mouseleave запускаются дважды.

Это происходит только в Google Chrome. В Интернете   Исследователь   7, Firefox 3, Opera и Safari оба события запускаются только один раз.

Почему это происходит?

ответ

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); }); 
    } 
) 
}); 
+1

Yup - как только отображается предупреждение, запускается другое событие mouseover. – Shog9

+1

Спасибо за ваш ответ. Я проверил Safari - там предупреждение «убивает» событие mouseleave ... – emirc

8

Я полагаю, это не отвечает на ваш вопрос, но это сообщение возникло при исследовании моей собственной ошибки. Оказалось, проблема в том, что я случайно включил внешний javascript дважды.

Просто подумал, что было бы целесообразно документировать это для других, имеющих ту же проблему. Очевидная ошибка, которая потребовала времени для отслеживания!

+0

Спасибо, что была моей проблемой !! ;) +1 –

Смежные вопросы