我有一个简单的任务 - 从DOM元素中检索点击侦听器功能。
我已经解决了两个问题:
谈论第一个问题 - 我认为这并不重要,因为我只在一个地方使用此功能。但第二个问题是巨大的痛苦......
我在纯jQuery环境中测试过:
$(element).click(function(){})
$(element).data('events') /*contains events info*/
但是使用Backbone:
$(element).click(function(){})
$(element).data('events') /*alway empty*/
我不是JS大师,但似乎根本没有绑定的数据 ...也许这只是典型的Backbone行为,但仍然 - 我如何检索事件处理程序?
答案 0 :(得分:3)
如果您使用的是Backbone.js,则应该在Backbone.View对象内管理事件,并避免直接使用JQuery捕获事件。
你应该尝试这样的事情:
var myBody = $( 'body' );
var myDIV = $( '<DIV id="contentDIV"></DIV>' );
myBody.append( myDIV );
var myButton = $( '<button id="aButton">test</button>' );
myDIV.append ( myButton );
var MyView = Backbone.View.extend({
el : myDIV,
events: { 'click button#aButton' : 'doSomething' }, //here you bound the
//event to a function.
initialize: function(){
_.bindAll(this, 'render')
},
render: function(){
myDIV.append('<br>working...');
},
doSomething: function(){
alert( 'doSomething function.. after click event' );
}
});
var myView = new MyView;
myView.render();
PS:理解其工作原理的好教程:http://arturadib.com/hello-backbonejs/