我有 2 个元素,一个嵌套在另一个元素中。 (它是一个模式对话框)。当用户单击外部元素时,应触发函数 closeModal
,如果用户单击内部元素(其子元素)内的 li
,则应触发另一个函数 like
应该被触发。
问题:我查看了其他 solutions并尝试应用于我的backbone.js View ,但它似乎不起作用。有什么不同的地方需要改变吗?
查看
ModalShowItemView = Backbone.View.extend({
el: '#modal_show_item',
events: {
'click div#modal': 'closeModal',
'click li#like' : 'like'
},
initialize: function() {
this.render();
this.clickHandler();
},
render: function() {
$(this.el).show().append( this.template( this.model.toJSON() ) );
},
clickHandler: function() {
var self = this;
$(this.el).click(function(e) {
if(e.target == self) {
self.closeModal();
}
});
},
closeModal: function() {
console.log('closemodal');
},
like: function() {
console.log('like');
}
});
最佳答案
您提到的其他solutions可能是您需要做的,除了在事件对象本身上执行 .stopPropagation()
(如 event.stopPropagation()
中所示)。我不知道通过 delegateEvents
绑定(bind)的事件处理程序会传递任何相关的事件对象,但据我所知,帮助页面上没有记录它。
关于javascript - 单击事件以排除子项 (backbone.js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11830606/