удаление JavaScript-списков событий - PullRequest
4 голосов
/ 30 января 2012

У меня есть следующий javascript для активации когда-либо

document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);

, но у меня возникают проблемы с удалением прослушивателя событий, когда некоторые я делаю это

document.removeEventListener('touchmove', function (e) { e.preventDefault(); }, false);

функция removeEventListener не работает,Я провел небольшой поиск похожих случаев и, к сожалению, не могу найти решение.Я ценю любую помощь.

Ответы [ 2 ]

13 голосов
/ 30 января 2012

Вы отправляете анонимную функцию в вызов addEventListener. Вместо этого используйте именованную функцию и отправьте ее в removeEventListener, например так:

function handleTouchMove(e) {
  e.preventDefault();
}
document.addEventListener('touchmove', handleTouchMove, false);

document.removeEventListener('touchmove', handleTouchMove);

В противном случае, то, как вы это делали, функция, которую вы отправили в removeEventListener, была совершенно другой функцией, даже если она имела то же содержимое.

2 голосов
/ 30 января 2012

Вы должны передать фактическую ссылку на такую ​​же функцию, как это:

function handleTouch(e) {
    e.preventDefault();
}

document.addEventListener('touchmove', handleTouch, false);

document.removeEventListener('touchmove', handleTouch, false);

Вы не можете использовать вторую копию другой анонимной функции, даже если в них содержится один и тот же код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...