JavaScript / jQuery: событие сработало дважды - PullRequest
2 голосов
/ 28 февраля 2009

Я пытаюсь связать некоторые события с помощью 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, Opera и Safari оба события запускаются только один раз.

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

Ответы [ 2 ]

8 голосов
/ 28 октября 2011

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

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

6 голосов
/ 28 февраля 2009

Я думаю, что предупреждение действительно вызывает дополнительные события в 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); });
    }
  )
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...