2012-09-22 30 views
2

如果我有一個Backbone.js的查看和它在事件列表中的事件:Backbone.js的觀看賽事禁用啓用

events: { 
    'click #somebutton': 'clicked'   
}, 
clicked: function() { 
    console.log('clicked'); 
} 

我怎麼能那麼禁用/啓用該事件?因此,舉例來說,如果它被點擊然後 事件被刪除(按鈕保持在屏幕上,但灰色等)。當視圖的其他部分被更新時,或者啓用了事件 。當然我可以使用jquery,但我想知道這個功能是否可用於主幹。

感謝您的任何答案

保羅

回答

2

您可以隨時使用delegateEvents()undelegateEvents()重做DOM和你的骨幹查看您之間的事件綁定。也就是說,我通常只保留事件處理程序並在處理程序中添加一個條件。

// .disabled class (CSS) grays out the button 

clicked: function(event) { 
    var buttonEl = $(event.currentTarget); 

    if (buttonEl.hasClass('disabled')) { 
     // Do nothing 
    } else { 
     // Do something AND... 
     buttonEl.addClass('disabled'); 
    } 
} 

然後,當你想要還原功能,你可以有你的其他觀點或代碼只是removeClass('disabled')

UPDATE - 禁用財產

看評論,但一個更簡單,更好的解決方案是使用按鈕的disabled屬性disabled="disabled"

+0

謝謝這就是我會做的,以及只是想確保沒有一個'正確'的方式做到這一點。 –

+2

@PaulThompson:如果它真的是'

+0

嘿嘿。爲什麼有時候會錯過最簡單的東西? :-)我不知道有關殘疾人的財產,但這肯定會讓事情變得更容易。 – jmk2142

2

使用delegateEventsundelegateEvents來綁定和解除綁定事件。檢查參考:delegateEvents