点击事件未启动!(backbone.js)

Click event not firing! (backbone.js)

本文关键字:backbone js 启动 事件      更新时间:2023-09-26

我的视图有一个点击处理程序,但点击事件处理程序指向视图时,视图的el $('#modal')似乎不会在点击时激发。但是,当我以$('modal')的任何子级为目标时,单击事件会在单击时触发。

我猜$('#modal')没有被视为视图的一部分,所以在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'

主干事件使用jQuery的delegate函数,该函数将处理程序(在本例中为closeModal)应用于匹配给定选择器(在本案中为click #modal)的所有子级。由于使用click #modal,我们正在#modal中查找名为#modal的子元素,因此找不到任何元素。

看看delegate(),看看我的意思。