Как лучше всего удалить прослушиватель событий из элемента?



API jQuery .off() может удалить только событие, добавленное с помощью собственного метода on(или bind в jQuery), многие сторонние плагины могут добавлять события с помощью чистого javascript и из-за проблем совместимости браузера, есть ли какая-либо одна строка кода, которая может сделать это проще?

468   3  

3 ответов:

Если обработчик событий был добавлен с помощью .addEventListener(), то единственный способ удалить его-с помощью .removeEventListener(), и это означает, что вам также нужно знать функцию обработчика, чтобы использовать .removeEventListener(), поэтому, если в качестве обработчика использовалась анонимная функция, то нет никакого способа удалить прослушиватель событий.

В некоторых случаях самый простой способ очистить все прослушиватели событий от элемента DOM-это заменить его новым элементом того же типа (возможно, сохраняя при этом дочерние элементы). Это очевидно, тупой инструмент, потому что он очистит все состояние, которое было связано с предыдущим элементом DOM.

Если событие добавлено jQuery.on(), вы можете удалить его с помощью jQuery.off().

Если событие добавлено jQuery.bind(), Вы можете удалить его с помощью jQuery.unbind().

Если событие добавлено pure .addEventListener() в pure javascript , вы можете удалить его с помощью .removeEventListener() .

Если событие добавлено плагином, поэтому вы не будете знать метод, как событие было добавлено, поэтому, чтобы убедиться, что события удалены, вам нужно очистить элемент DOM и создать новый элемент, идентичный удаленному...

Comments

    Ничего не найдено.