2014-11-18 3 views
-1

Зарегистрируйте событие click, как показано ниже, при щелчке на пустое пространство на странице обработчик вызывается 5 раз. Я ожидал, что его однажды назовут.обработчик события jquery, вызываемый много раз

$(document).click(function(event) { 
     console.log(event.target); 
    }); 

Может ли это объяснить это? Благодарю.

+0

, что часть коды Влияет ли вашу проблему? Если нет, можете ли вы предоставить нам [Fiddle] (http://jsfiddle.net/), что делает? – Jonathan

+0

Невозможно воспроизвести его из фрагмента кода – damare

+0

Этот вопрос является неопровержимым (кроме диких догадок) без дополнительной информации, поскольку три строки кода сами по себе не вызовут этой проблемы. – jfriend00

ответ

2

Возможно, вы загрузили код 5 раз. Как вы включили его на свою страницу? (Изменить ваш вопрос ответить)

+0

Хотя это догадка, это кажется правдоподобным догадкой. – jfriend00

+1

Я ставлю свою ставку на активы инфраструктуры с кодом, включенным в несколько файлов. – Kalilz

+0

Он может быть зарегистрирован несколько раз. Каждый раз, когда ajax обновляет элемент, событие регистрируется. Я должен использовать $ (document) .off (click, func), чтобы удалить предыдущие зарегистрированные обработчики. Благодарю. – eastwater

-1

попробовать это: (., Вместо того, чтобы заменить - как вы ожидали)

$(document).on('click', function(e){ 
 
    console.log(e.target); 
 
});

+2

Это не отличается от кода OP. '.click (...)' - это просто псевдоним для '.on (« click », ...)'. – jfriend00

0

JQuery .click() EventHandler устанавливает новый обработчик событий на каждый клик

Вы должны уметь разрешать это путем развязывания, затем перематывать обработчик событий:

$(document).unbind('click').click(function(event) { 
//...// 
}); 

[EDIT]

Обработчик .unbind() события амортизируется ... поэтому выше должен быть таким:

$(document).off('click').on('click', function(event) { 
// do things // 
}); 
Смежные вопросы