4

ビューのクリックハンドラーがありますが、クリックイベントハンドラーのターゲットになっている場合、クリックしてもビューが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
    }
});
4

1 に答える 1

9

それ以外の:

'click #modal': 'closeModal'

試す:

"click": 'closeModal'

バックボーンイベントはjQueryの関数を使用します。この関数は、特定のセレクター(この場合)に一致するすべての子にdelegateハンドラー(この場合)を適用します。#modal内で#modalという名前の子を探しているため、要素が見つかりません。closeModalclick #modalclick #modal

delegate()私が何を意味するのかを調べてみてください。

于 2012-07-10T21:31:26.763 に答える