javascript - 点击事件未触发! (主干.js)

标签 javascript jquery backbone.js underscore.js

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

相关文章:

Javascript 简单原型(prototype)继承

javascript - 悬停/单击时更改内容

javascript - 为什么模型 ID 没有保留在集合中?

javascript - Backbone.js 集合未按 id 成功获取

javascript - Backbone.js 获取实际上不设置属性

javascript - 使用 post 上传 jQuery 文件

javascript - 运行 http-server 时出现 ERR_INVALID_REDIRECT

javascript - 按下按钮时如何隐藏/显示内容?

jquery - 通过 Jquery 从 html 中删除严格的强/粗体文本标签

javascript - 列表元素不滑动新元素