我正在使用Backbone.js创建一个应用程序,该应用程序具有父视图和多个子视图。子视图包含它们监听并执行功能的链接。
父视图存储所有子视图的列表。在渲染函数完成计算自己的HTML之后,它执行以下操作:
$(this.el).html(html);
for (var i = 0; i < this.views.length; i++){
$('.children', this.el).append(this.views[i].render().el);
}
答案: 问题在于我是在渲染期间创建链接的。也就是说,在第一次渲染时(从init中调用),事件成功绑定到了链接上。但是,由于所有后续的渲染调用都会重新创建整个元素,新链接没有将处理程序绑定到它上面。这通过@Tom Tu的解决方案,将this.delegateEvents()
添加到渲染中得以解决。