Удалить прослушиватель событий по клику JS - PullRequest
0 голосов
/ 05 сентября 2018

Сценарий:

  • Я использую этот код для страницы и применяю его к событию клика,
    теперь у меня возникли проблемы с удалением его со страницы (таким же образом, по клику).
  • Как мне это сделать?

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

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

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

//Touchmove action
function preDef(e) {
  e.preventDefault();
}

//Add the touchmove action and toggle the button to remove the action
function addE(e) {
  e.target.removeEventListener('click', addE, {passive: false});
  e.target.addEventListener('click', removeE, {passive: false});
  document.addEventListener('touchmove', preDef, {passive: false});
}

//Remove the touchmove action and toggle the button to add the action
function removeE(e) {
  e.target.removeEventListener('click', removeE, {passive: false});
  e.target.addEventListener('click', addE, {passive: false});
  document.removeEventListener('touchmove', preDef, {passive: false});
}

//Initialize the add action
document.getElementById('somebutton').addEventListener('click', addE, {passive: false});
0 голосов
/ 05 сентября 2018

Использовать именованную функцию обратного вызова touchMove при привязке / откреплении прослушивателя событий к методам addEventListener и removeEventListener.

Прослушиватель событий, который необходимо удалить, идентифицируется с помощью комбинации тип события, сама функция прослушивателя событий и различные необязательные параметры, которые могут повлиять на процесс сопоставления;

var touchMove = function(e){
  e.preventDefault();
};

document.addEventListener('touchmove', touchMove, { passive: false });

document.removeEventListener('touchmove', touchMove);
...