我有一个简单的任务 - 从 DOM 元素检索点击监听器函数。
我已经解决了两个问题:
- 我不知道如何获取事件监听器,它是通过
addEventListener
函数设置的 $(element).data('events')
总是空
关于第一个问题 - 我认为这并不重要,因为我只在一个地方使用这个功能。但是第二个问题是一个巨大的痛苦......
我已经在纯 jQuery 环境中进行了测试:
$(element).click(function(){})
$(element).data('events') /*contains events info*/
但是有了 Backbone:
$(element).click(function(){})
$(element).data('events') /*alway empty*/
我不是 JS 大师,但似乎根本没有绑定(bind)数据...也许这只是典型的 Backbone 行为,但仍然 - 我如何检索事件处理程序?
最佳答案
如果您使用的是 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/
关于javascript - 主干和 jQuery 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8290084/