удалить прослушиватель событий с параметрами - PullRequest
0 голосов
/ 25 февраля 2020

Я пытаюсь удалить некоторых слушателей, прикрепленных к определенному массиву элементов.

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

Вот моя справочная функция

const editTask = function (element, taskIndex) {
   const handler = function(event) {
   // my code ...
   }
}

и вот как я добавляю слушателей

function addEditListeners() {
  const editButtons = [].slice.call(document.getElementsByClassName("edit-btn"));
  console.log('editbuttons', editButtons);
  //editButtons.forEach(function (element) {
  //    element.removeEventListeners("click", editTask);
  //});
  editButtons.forEach(function (element, index) {
    element.addEventListener("click", handler);
  });
}

Я попытался отправить параметры в скобках, но editTask не определено, что я делаю неправильно?

1 Ответ

1 голос
/ 25 февраля 2020

Обратите внимание, что вы передаете handler, который существует только в функции editTask, и нигде больше, ваша функция добавления слушателя не должна быть такой:

editButtons.forEach(function (element, index) {
    element.addEventListener("click", (e) => editTask(element, index, e));
  });

Также я вижу, что вы тоже хотите, чтобы там было событие поэтому вы должны передать его в задачу редактирования

const editTask = function (element, taskIndex, event) {
   const handler = function(event) {
   // my code ...
   }
   handler(event);
}
...