为什么在Backbone视图中渲染模板时不会触发滚动事件?

时间:2014-04-25 16:38:12

标签: javascript jquery backbone.js

this code sample中,Backbone视图绑定到预先存在的DOM元素。滚动事件按预期触发。

this alternate sample中,Backbone视图呈现HTML而不是使用预先存在的DOM元素。滚动事件不会触发。

为什么?

主要区别在于第二个样本是这样做的:

this.$el.html(template);

1 个答案:

答案 0 :(得分:1)

这有效:

http://jsfiddle.net/hKWR9/1/

$(function(){
    var MyView = Backbone.View.extend({
        className: 'scrollbox',
        events: {
            'click': 'onClick',
            'scroll': 'onScroll'
        },
        initialize: function() {
            this.render(); 
        },
        render: function() {
            var template = '<div class="filler"></div>';
            $('body').append(this.$el); 
            this.$el.html(template);

        },
        onClick: function() {
            console.log('click');
        },
        onScroll: function() {
            console.log("scroll");
        }
    });

    var App = new MyView();

}());

您的小提琴不起作用,因为您使用类名.scrollbox定义了el,而它应该是scrollbox。在'.scrollbox'中创建另一个'滚动框'似乎没什么好处。