2012-09-10 63 views
12

我已經下降事件哈希 -拆散骨幹觀活動

events: 
    'click #someButton : 'someFunction' 

要關閉我曾嘗試

close: 
    $("#someButton").unbind("click") 

`close: 

     $("#someButton").remove()` 

但someFunction仍然被解僱更多的觀點比一次。如何從按鈕中解除此事件?

我也試過

$(@el).find("#someButton").unbind("click") as well 
+0

總是提到[Backbone Documentation](http://backbonejs.org/#Events) –

回答

26

Backbone.js的查看事件都被委託給視圖的el(所以沒有綁定到您的#someButton元素,而是當一個click事件冒泡到el事件它檢查是否該事件從一個元素來了,是選擇匹配),既然如此如果你想刪除人刪除您需要從el刪除的事件,例如

$(this.el).off('click', '#someButton'); 

l授權事件,你可以使用視圖的undelegate方法

+0

mhmm,我試過這樣做,但函數還是不止一次發射 – praks5432

+0

嘗試像'$(this。$ el) .off(「click」,「#someButton」);' – Jack

+0

它工作:) unbind.click(「click」)的東西有什麼問題? – praks5432

0

傑克的解釋和答案都很好。不幸的是,他的代碼示例並不適合我。用相反的:

$(this.el).off('click', '#someButton'); 

我不得不使用:

this.$el.off('click', '#someButton'); 

這對我來說很有意義,因爲該事件是必然this.$el對象。

0

若要進一步添加,我在子視圖內使用this.$el.off();初始化以銷燬與子視圖綁定的所有事件。同一個事件會觸發X次數據刷新被調用。

我看到了複製的目標使用:

var $target = $(e.currentTarget); 
console.log($target); 

我想添加評論的答案,但我有低信譽。