che*_*ang 3 javascript backbone.js
我试着开始使用backbone.js,但是当我不使用'body'作为View的el时,我发现事件不起作用.这是代码.您可以将其另存为html文件并运行它.
<html>
<body>
<button id='openEssay'>test</button>
<div id='div' style='width:100px;height:100px;'></div><script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script src="http://ajax.cdnjs.com/ajax/libs/underscore.js/1.1.6/underscore-min.js"></script>
<script src="http://ajax.cdnjs.com/ajax/libs/backbone.js/0.3.3/backbone-min.js"></script><script>
(function($){
var AppView = Backbone.View.extend({
el:'body',//success
//fail el:'#div',
//fail tagName: 'li',
//fail id:'div',
initialize:function(){
_.bindAll(this, 'openEssay');
},
events:{
'click button#openEssay':'openEssay'
},
openEssay:function(){
alert('a');
}
});
var app = new AppView();
})(jQuery);
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
mu *_*ort 15
Backbone this.el使用委托形式on(或delegate在较旧的Backbones中)将事件处理程序绑定到视图,Backbone.View#delegateEvents有关详细信息,请参阅.所以如果你想要这些事件:
events: {
'click button#openEssay':'openEssay'
}
Run Code Online (Sandbox Code Playgroud)
做任何事情然后this.$el.find('button#openEssay')需要匹配的东西(this当然,视图对象).您的四次尝试中只有一次:
el: 'body'el:'#div'tagName: 'li'id: 'div'将放入<button id="openEssay">内部this.el所以只有(1)会openEssay在你按下按钮时打电话.如果你把按钮放在里面,#div那么(2)也会起作用.