2011-11-27 74 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/