Мне нужно, чтобы отделить события в jQuery, когда я удалить элементы


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

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

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

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

2 14

2 ответа:

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

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

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

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

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

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

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

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