Нужно ли отсоединять события в jQuery при удалении элементов

У меня есть пользовательский интерфейс с использованием динамических вкладок, поэтому содержимое можно загружать на вкладку, а затем вкладку можно закрыть и удалить содержимое со страницы.

Когда я загружаю контент во вкладку, я присоединяю множество событий к элементам, используя jQuery.

Что происходит, когда я удаляю эти элементы со страницы? Нужно ли знать jQuery?

Кроме того, имеет ли значение, если я присоединяю событие несколько раз? Например, в моей загрузке вкладки я мог бы прикрепить событие, используя селектор класса как $('.submitButton').click(...), Но у меня уже могут быть открыты другие вкладки, к которым уже прикреплено событие submitButton. В этом случае я снова присоединю то же самое событие. Есть ли проблемы с этим?

2 ответа

Решение

Если вы используете методы jQuery .remove() или же .empty(), они очистят все события (и другие данные), которые были назначены с помощью jQuery.

Из документов для удаления ():

В дополнение к самим элементам удаляются все связанные события и данные jQuery, связанные с элементами.

и для пустых ():

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

Если вы использовали собственные методы удаления API, все эти данные будут зависать. Так что лучше использовать методы jQuery.

Если вы удаляете элемент с помощью .remove (), все связанные события и данные jQuery, связанные с этим элементом, удаляются.

Кроме .detach (), который удаляет элемент из DOM, но сохраняет все связанные данные и события в памяти (что полезно, если вы хотите повторно вставить этот элемент позднее)

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