backbone.js不会触发DOM元素上的click事件

时间:2012-12-01 00:14:00

标签: backbone.js

我无法在DOM元素上触发click事件。

这是我的js文件:app.js.我很确定我在这里错过了什么或做错了但我无法弄清楚在哪里。

var App = Backbone.View.extend({

    el: $('body'),

    initialize: function() {
        _.bindAll(this, 'sayHello');
    },

    events: {
        'click .link': 'sayHello'
    },

    sayHello: function(e) {
        alert('Hello!');
    }

});

var app = new App();

这是我的HTML文件:index.htm。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title></title>

    <script type="text/javascript" src="assets/js/jquery-1.8.3.min.js"></script>
    <script type="text/javascript" src="assets/js/underscore-min.js"></script>
    <script type="text/javascript" src="assets/js/backbone-min.js"></script>

    <script type="text/javascript" src="assets/js/app.js"></script>

</head>
<body>

<a href="#" class="link">Click here!</a>

</body>
</html>

2 个答案:

答案 0 :(得分:2)

这是狡猾的承认。从逻辑上思考代码。您的JS脚本位于head

jQuery选择器el: $('body')尚不存在。 (JavaScript立即执行)。尝试el: 'body'

答案 1 :(得分:0)

您必须在dom load事件上初始化视图。

var App = Backbone.View.extend({

    initialize: function() {
        _.bindAll(this, 'sayHello'); // you don't need this for your code to work
    },

    events: {
        'click .link': 'sayHello'
    },

    sayHello: function(e) {
        alert('Hello!');
    }

});


$(function(){
  var app = new App({el: $("body")});
});