Мне нужно, чтобы отделить события в jQuery, когда я удалить элементы
У меня есть пользовательский интерфейс, использующий динамические вкладки, поэтому содержимое может быть загружено во вкладку, а затем вкладка может быть закрыта и содержимое удалено со страницы.
Когда я загружаю содержимое на вкладку, я прикрепляю много событий к элементам с помощью jQuery.
Что происходит, когда я удаляю эти элементы со страницы? Нужно ли это знать jQuery?
Кроме того, имеет ли значение, если я прикрепляю событие несколько раз? Например, в моей вкладке load я мог бы прикрепить событие, используя селектор класса, такой как $('.submitButton').click(...)
. Но я возможно, уже открыты другие вкладки, к которым уже было присоединено событие submitButton. В этом случае я буду повторно прикреплять то же самое событие. Есть ли какие-то проблемы с этим?
2 ответа:
Если вы используете методы jQuery
.remove()
или.empty()
, они очистят все события (и другие данные), которые были назначены с помощью jQuery.Из документов для удаления():
Помимо самих элементов, удаляются все связанные события и данные jQuery, связанные с элементами.
И для пустых():
К во избежание утечек памяти jQuery удаляет другие конструкции, такие как обработчики данных и событий, из дочерних элементов перед удалением самих элементов.
Если вы использовали собственные методы API для удаления, все эти данные будут висеть вокруг. Поэтому лучше использовать методы jQuery.
, если удалить элемент с помощью .remove () все связанные события и данные jQuery, связанные с элементом, удаляются.
Кроме .detach () , который удаляет элемент из DOM, но сохраняет все связанные данные и события в памяти (что полезно, если вы хотите повторно вставить этот элемент в более позднее время)