我正在尝试给出here的backbone.js示例,然后尝试自己编写一些代码。
由于某种原因,我附加到事件'click p'的事件处理程序无效。单击段落标记时,为什么“突出显示”功能没有执行?
var ItemView = Backbone.View.extend({
tagName : 'p',
events: {
'click p': 'highlight'
},
initialize: function(){
console.log("An object of ItemView was created");
_.bindAll(this, 'render', 'highlight');
this.render();
},
render: function(){
this.$el.text(this.model.get('content'));
$('body').append(this.$el);
return this;
},
highlight: function(){
console.log('clicked');
}
});
答案 0 :(得分:5)
此事件它定位到 root 元素中的任何<p>
元素。即使您的 root 元素是<p>
元素,它也不会以 root 元素为目标。
尝试:
events: {
'click': 'highlight'
}
定位 root 元素。
答案 1 :(得分:1)
嗯...在你的渲染中,你用这个替换所有的身体内容。$ el。当你替换所有内容时,我认为你已经有效地“取消了”事件哈希。所以在你执行追加之后,像这样调用this.delegateEvents():
render: function(){
this.$el.text(this.model.get('content'));
$('body').append(this.$el);
this.delegateEvents();
return this;
}
这应该允许您点击段落标记。