2012-06-26 189 views
1

我有以下看法:click事件在Firefox不觸發 - 骨幹

App.HouseListElemView = Backbone.View.extend({ 
    tagName: 'li', 
    events: { 
     'click': function() { 
      App.detailsRouter.navigate('details/' + this.model.id, true);  
     }, 
     'click .btn-compare': 'compare', 
     'click .btn-compare > input': 'toggleCompare', 
    }, 
    // more stuff here... 
}); 

該列表中的第一次點擊觸發事件在Safari和Chrome瀏覽器,但不能在Firefox。我使用的是Firefox 11.0。

我是否宣佈我的活動有誤?

+0

您的HTML看起來像什麼?這些事件在Firefox中都很好:http://jsfiddle.net/ambiguous/vKHdc/ –

+0

這很有趣..它可以在Firefox中工作。那麼我不知道會出現什麼問題。我的html是一個帶有各種列表項目的「ul」.. – AlexBrand

+0

調整小提琴以匹配您使用的HTML,或者在問題中包含模板和「render」。我的第一個猜測是,你正在生成無效的HTML,Firefox正在糾正它,以致搞砸你的事件代表團。 –

回答

0

是的你做得不對。做下面的,它應該工作

App.HouseListElemView = Backbone.View.extend({ 
    tagName: 'li', 
    events: { 
     'click': 'navigateTo', 
     'click .btn-compare': 'compare', 
     'click .btn-compare > input': 'toggleCompare', 
    }, 
    navigateTo:function() { 
      App.detailsRouter.navigate('details/' + this.model.id, true); 
     }, 
    // more stuff here... 
}); 

,並通過單擊事件將被綁定到的觀點是el根的方式。因此,請指定使用所選類似的點擊目標'click #navigator':'navigateTo'

+0

根據文檔:「事件的格式爲{」event selector「:」callback「}。回調函數可以是視圖上方法的名稱,也可以是直接函數體。「 –

+1

我確實希望將事件綁定到el。不過,我將'click'改成'click li'並開始工作。 – AlexBrand

+0

在'events'中使用匿名函數對於較新的Backbones很好。 –