2011-11-27 68 views
1

我有一个简单的任务 - 从DOM元素中检索点击侦听器函数。Backbone和jQuery事件

我fased两个问题:

  1. 我不知道如何获取事件监听器,这是通过的addEventListener FUNC
  2. $(元素)。数据( '事件')是集总是

谈到的第一个问题 - 我认为这并不重要,因为我只在一个地方使用此功能。但第二个问题是我纯粹的jQuery的环境中测试一个巨大的痛苦......

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

但随着骨干:

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

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

+0

您发布的代码你“但是,随着骨干网”的例子等同于你的“纯粹的jQuery环境“的例子。显然那么*你正在做的其他事情*正在破坏它。你需要将这些添加到你的问题。 –

回答

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/