单击事件以排除子项(主干.js)

Click event to exclude children (backbone.js)

本文关键字:主干 js 事件 排除 单击      更新时间:2023-09-26

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

问题:我查看了其他解决方案,并尝试应用到我的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');
    }
});

您提到的其他解决方案可能是您需要做的,除了在事件对象本身上像在event.stopPropagation()中那样做.stopPropagation()。我不知道通过delegateEvents绑定的事件处理程序是否会传递任何相关的事件对象,但帮助页面AFAIK中没有对此进行说明。