Javascript 单击事件以排除子项(backbone.js)

Javascript 单击事件以排除子项(backbone.js),javascript,jquery,backbone.js,underscore.js,Javascript,Jquery,Backbone.js,Underscore.js,我有两个元素,一个嵌套在另一个中。(这是一个模态对话框)。当用户单击外部元素时,应触发函数closeModal,如果用户单击内部元素(其子元素)中的li,则应触发另一个类似的函数 问题:我查看了其他视图,并尝试应用到我的backbone.js视图,但它似乎不起作用。有什么不同的东西需要改变吗 查看 ModalShowItemView = Backbone.View.extend({ el: '#modal_show_item', events: { 'click

我有两个元素,一个嵌套在另一个中。(这是一个模态对话框)。当用户单击外部元素时,应触发函数
closeModal
,如果用户单击内部元素(其子元素)中的
li
,则应触发另一个类似
的函数

问题:我查看了其他视图,并尝试应用到我的backbone.js视图,但它似乎不起作用。有什么不同的东西需要改变吗

查看

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');
    }
});

除了在事件对象本身上执行
.stopPropagation()
中的
事件.stopPropagation()。我不知道通过
delegateEvents
绑定的事件处理程序是否会传递任何相关的事件对象,但AFAIK的帮助页面上没有记录它。

您必须执行event.preventDefault();返回false;在这种情况下,当用户单击外部div时,当用户单击内部div时,将调用closeModal,此时将调用like,并且不会传播事件。。。