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