我的 View 有一个点击处理程序,但似乎 View 的 el
$('#modal')
当被点击事件处理程序定位时不会触发单击时。但是当我定位 $('modal')
的任何子级时,单击事件会在单击时触发。
我猜 $('#modal')
不被视为 View 的一部分,因此 events
中定义的点击事件处理程序对其不起作用。如果是这样,还有其他解决方法吗?
ModalView = Backbone.View.extend({
el: $('#modal'),
template: _.template( $('#tpl_modal').html() ),
events: {
'click #modal': 'closeModal'
},
initialize: function() {
_.bindAll(this, 'render', 'renderSimilarPosts', 'closeModal');
this.render();
},
render: function() {
$(this.el).fadeIn('fast').append( this.template( this.model.toJSON( this.model ) ) );
},
closeModal: function() {
// some code
}
});
最佳答案
代替:
'click #modal': 'closeModal'
尝试:
"click": 'closeModal'
Backbone 事件使用 jQuery 的 delegate
函数,它将处理程序(在本例中为 closeModal
)应用于匹配给定选择器(在本例中为 click #模态
)。由于使用 click #modal
我们正在 #modal 中查找名为 #modal 的子项,因此未找到任何元素。
查看 delegate()
明白我的意思。
关于javascript - 点击事件未触发! (主干.js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11422281/