在学习Backbone.js的过程中遇到一个问题:在view的events中添加事件时总是不生效。如,
$(function(){
var MyView = Backbone.View.extend({
events : {
'click #test' : 'clickTest',
'click #create' : 'createData'
},
clickTest : function(){
alert("aaa!");
},
createData : function() {
alert("create!");
}
});
var view = new MyView();
});
添加的click事件总是不生效。页面HTML的代码:
<input type="button" value="Test" id="test" /> <br/> <p id="view"> <input type="button" value="Create" id="create" /> </p>
后来找到了解决方法:缺少“el”,在MyView中添加el元素就行,el的值是所要触发事件的html控件的父元素。在本例中如果el='#view',则只有id为"create"的那个button的事件有效;如果el='body',则id="test"和id="create"的元素的事件都有效,具体代码如下:
$(function(){
var MyView = Backbone.View.extend({
el:'#view',
events : {
'click #test' : 'clickTest',
'click #create' : 'createData'
},
clickTest : function(){
alert("aaa!");
},
createData : function() {
alert("create!");
}
});
var view = new MyView();
})
实例演示地址:http://jsfiddle.net/wuying/uheNB/5/