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