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

标签 javascript jquery backbone.js underscore.js

我有 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/

相关文章:

Javascript 数组排序和唯一性

javascript - smoothstate.js - 后退按钮有时不起作用?

javascript - 获取与当前单元格相邻的第四个单元格的类

javascript - 从另一个js函数触发Backbone事件

javascript - Backbone Marionette 取消 itemview 上的所有事件 - 立即

javascript - 如何在 datepicker ui 的 onSelect 方法中使用 $(this)

来自工厂设计的 JavaScript 模块而不是类

jquery - jQuery 的自定义 URL

php - iframe 设计在页面重新加载时变回旧设计

Backbone.js 从 view#2 调用 view#1 的方法