无法让Backbone.js查看事件来触发

时间:2011-10-04 21:24:54

标签: javascript backbone.js

似乎以下代码进入initialize但我的事件似乎没有被触发。

我在这里缺少什么?

var index = (function ($, window, document) {

    var methods = {};

    methods = {
            init: function () {

            },

            getView: Backbone.View.extend({
              el: $('.settings'), 

              events: { 
                 'click .settings': 'addUl'
              },

              initialize: function () {
                  console.log('init');
              },

              render: function () {
              },

              addUl: function () { 
                console.log('addUI');
                this.el.append("<ul> <li>hello world </li> </ul>");
              }
            })
    };

    return methods;   } (jQuery, window, document));   

var stuff = new index.getView();

链接到jsbin

3 个答案:

答案 0 :(得分:3)

删除'click .settings'

中的空格

答案 1 :(得分:3)

实际上完全删除.settings。

'click .settings'正在为this.el的后代注册一个匹配'.settings'的点击处理程序。

在你的例子中,你想直接在this.el上注册一个事件,所以你不需要后代选择器。

答案 2 :(得分:3)

问题在于,您的视图元素($el)具有settings类而不是子级。

click .settings告诉骨干网在$el上为.settings的任何孩子绑定“点击”事件。但是,因为$el具有类settings,所以绑定永远不会匹配。

这就是为什么当您移除.settings时它会起作用,因为您在$ el上说“任何'点击'

文档说明click .blah的原因是因为它假设带有class='blah'的html元素是$el元素的子元素。

希望这有帮助。

相关问题