Отмена привязки событий к элементам, которые будут добавлены в DOM позже

У меня есть div с class="background". Это будет добавлено в DOM, когда я нажму кнопку. С этим связано событие "колеса".

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

Я старался: $(".modal-backdrop.am-fade").unbind('wheel');

Это работает, но я должен написать это утверждение после каждого добавления div в DOM. I want something which I can write only once and would apply to all the divs which would be added to the DOM in future

1 ответ

Я хочу что-то, что я могу написать только один раз и применимо ко всем элементам div, которые будут добавлены в DOM в будущем

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

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

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


Конечно, лучший ответ - либо прекратить использование библиотеки, если она не выполняет то, что вам нужно, либо изменить ее (в конце концов, это JavaScript), чтобы она не делала то, что вам не нужно.

Другие вопросы по тегам