3
<!DOCTYPE HTML > 
<html>
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

        <script src="jquery.js">
    </script> 

    <script src="underscore.js">

    </script> 
    <script src="backbone.js">
    </script> 
    <script>
        var View = Backbone.View.extend({

            el: '#listen_to_box',

            events: { 
                'click [type="checkbox"]':'clicked',
            },
        clicked : function(event ) { 
            console.log("events handler for "+  this.el.outerHTML);
        }
    });

    </script>

    <div id="listen_to_box">
        <input type="checkbox" />
    </div>

</body>
</html>

单击复选框时未调用单击的函数,请帮助我为复选框上的单击事件关联侦听器函数。谢谢

4

3 回答 3

5

你的代码看起来很完美。当您尝试在视图上创建一个新实例时,您已经定义了Backbone View被调用View的事件并附加了事件。所以该事件永远不会附加..

只需创建一个新实例,您的代码就可以工作。

var view = new View(); 或者 new View() 应该做

检查小提琴

您的代码在页面上遇到元素之前运行。要使其正常工作,您要么需要将代码移动到结束标记之前,要么将代码封装在里面Document Ready handler

$(function() {
     // Your code here
});
于 2013-07-29T16:32:49.817 回答
2

您的问题是您在el定义View类时传入,而不是在实例化View类时传入它。试试这个:

var View = Backbone.View.extend({
    events: {
        'click [type="checkbox"]': 'clicked',
    },
    clicked: function (event) {
        console.log("events handler for " + this.el.outerHTML);
    }
});

// Pass in el when instantiating the view
new View({
    el: $("#listen_to_box")
});

在这里看到一个工作小提琴

于 2013-07-29T15:36:24.860 回答
0
change to  
clicked: function (event) {
    console.log("events handler for " + this.$el.outerHTML);
}

看看有没有帮助

于 2013-08-02T12:30:31.283 回答