Как лучше всего удалить прослушиватель событий из элемента?
API jQuery .off() может удалить только событие, добавленное с помощью собственного метода on(или bind в jQuery), многие сторонние плагины могут добавлять события с помощью чистого javascript и из-за проблем совместимости браузера, есть ли какая-либо одна строка кода, которая может сделать это проще?
3 ответов:
Если обработчик событий был добавлен с помощью
.addEventListener(), то единственный способ удалить его-с помощью.removeEventListener(), и это означает, что вам также нужно знать функцию обработчика, чтобы использовать.removeEventListener(), поэтому, если в качестве обработчика использовалась анонимная функция, то нет никакого способа удалить прослушиватель событий.В некоторых случаях самый простой способ очистить все прослушиватели событий от элемента DOM-это заменить его новым элементом того же типа (возможно, сохраняя при этом дочерние элементы). Это очевидно, тупой инструмент, потому что он очистит все состояние, которое было связано с предыдущим элементом DOM.
Если событие добавлено
jQuery.on(), вы можете удалить его с помощьюjQuery.off().Если событие добавлено
jQuery.bind(), Вы можете удалить его с помощьюjQuery.unbind().Если событие добавлено pure
.addEventListener()в pure javascript , вы можете удалить его с помощью.removeEventListener().
Если событие добавлено плагином, поэтому вы не будете знать метод, как событие было добавлено, поэтому, чтобы убедиться, что события удалены, вам нужно очистить элемент DOM и создать новый элемент, идентичный удаленному...
Comments