Сборка мусора Javascript не удалит связанные события для удаленных элементов.jQuery часто работает do в зависимости от того, какой метод вы используете.
Например, .html()
или .remove()
удалит события, а не утечку памяти.Если вы сомневаетесь, вы всегда можете использовать .empty()
.
По моему мнению, обсуждение .live()
довольно далеко от точки утечек памяти.Использование .live()
должно быть сделано, когда это имеет смысл с точки зрения архитектуры.Если вам не нужно, чтобы событие было связано до , элемент был добавлен в DOM или существовал после , элемент удален (потому что он может быть добавлен снова), тогда .bind()
действительноправильный и быстрый метод для использования..live()
медленнее, чем .bind()
, потому что каждое событие должно запускаться в элементе, пузыриться к document
, а затем пузыриться обратно к элементу для обработки .live()
, в то время как с .bind
оно может выполнятьсяпрямо сейчас.
Кроме того, к вашему сведению оба .bind()
и .live()
устарели в последней версии jQuery (1.7).Они по-прежнему будут работать, но новый синтаксис - .on()
, использующий делегирование вместо .live()
.Это потому, что слишком большое .live()
действительно замедляет страницы, потому что каждый .live
связывает другое событие с document
, которое необходимо прослушивать и обрабатывать каждое отдельное событие.