Backbone和jQuery事件

时间:2011-11-27 23:52:55

标签: javascript jquery javascript-events backbone.js

我有一个简单的任务 - 从DOM元素中检索点击侦听器功能。

我已经解决了两个问题:

  1. 我不知道如何获取通过 addEventListener func
  2. 设置的事件监听器
  3. $(元素).data('events')始终为空
  4. 谈论第一个问题 - 我认为这并不重要,因为我只在一个地方使用此功能。但第二个问题是巨大的痛苦......

    我在纯jQuery环境中测试过:

        $(element).click(function(){})
        $(element).data('events') /*contains events info*/
    

    但是使用Backbone:

        $(element).click(function(){})
        $(element).data('events') /*alway empty*/
    

    我不是JS大师,但似乎根本没有绑定的数据 ...也许这只是典型的Backbone行为,但仍然 - 我如何检索事件处理程序?

1 个答案:

答案 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/