点击事件没有开火!(Backbone.js的)

Nyx*_*nyx 4 javascript jquery backbone.js underscore.js

我的View有一个点击处理程序,但el $('#modal')点击事件处理程序所针对的视图似乎在点击时不会触发.但是当我针对任何孩子时$('modal'),点击事件会在点击时触发.

我猜测$('#modal')不被视为视图的一部分,因此events在其中定义的click事件处理程序不起作用.如果是这样,还有另一种方法吗?

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
    }
});
Run Code Online (Sandbox Code Playgroud)

Aus*_*tin 9

代替:

'click #modal': 'closeModal'
Run Code Online (Sandbox Code Playgroud)

尝试:

"click": 'closeModal'
Run Code Online (Sandbox Code Playgroud)

Backbone事件使用jQuery的delegate函数,它将处理程序(在本例中closeModal)应用于匹配给定选择器的所有子项(在本例中click #modal).因为click #modal我们在#modal中查找名为#modal的子项,所以没有找到任何元素.

看看delegate()我的意思.