События
jQuery empty
, html
и remove
очищают все события jquery и привязки данных для предотвращения утечек памяти (вы можете проверить исходный код jQuery для метода cleanData
, чтобы узнать больше - это недокументированноеmethod)
view.render()
не удаляет события, поскольку события представления Backbone связаны с использованием делегирования события и привязываются к el
представления, а не напрямую к элементам представления.
Если вы хотите повторно использовать ваши представления, вы можете удалить их, используя метод jQuery detach
, который сохраняет все события и данные связанными, хотя вы должны следить за тем, чтобы не вызвать утечек памяти таким образом.( jquery detach docs )
Если вы хотите пойти первым путем, вы всегда можете легко перепривязать события Backbone, используя метод Backbone.View delegateEvents
.( магистральный документ )
пс.Также чище и более оптимально использовать jQuery .empty()
, а не .html('')
, так как html-метод jQuery всегда сначала вызывает empty, чтобы очистить все события и данные, прежде чем вставить новый html.Также никогда не смешивайте jquery и собственный DOM innerHTML, так как это может привести к утечкам памяти из-за неочищенных событий / данных jQuery