似乎以下代码进入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
答案 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
元素的子元素。
希望这有帮助。