Javascript 单击firefox中未触发的事件-主干
我有以下看法:Javascript 单击firefox中未触发的事件-主干,javascript,backbone.js,Javascript,Backbone.js,我有以下看法: App.HouseListElemView = Backbone.View.extend({ tagName: 'li', events: { 'click': function() { App.detailsRouter.navigate('details/' + this.model.id, true); }, 'click .btn-compare': 'compare',
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中不会触发。我正在使用Firefox11.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
。因此,请根据文档“事件以{“事件选择器”:“回调”}格式编写。回调可以是视图上方法的名称,也可以是直接函数体。”我确实希望事件绑定到el。但是,我将click
更改为click li
,它就开始工作了。在events
中使用匿名函数对于较新的主干来说没问题。@muistooshort只是个疑问。我有一个与之关联的集合的模型。根据文档,url
的默认实现应该是post,get tocollection\u url/model\u id
,但它总是只对collection\u url
执行。我应该怎么做才能使它按照文档工作您在任何地方都设置了url
或urlRoot
吗?您的HTML是什么样子的?这些事件在Firefox中都很好:这很有趣。。它在firefox中确实是这样工作的。我不知道那会是什么问题。我的html是一个ul
,里面有各种列表项。调整提琴以匹配您正在使用的html,或者包括您的模板和问题中的render
。我的第一个猜测是,您正在生成无效的HTML,而Firefox正在以破坏事件委派的方式对其进行更正。使用模板更新了您的JSFIDLE:奇怪的是,它使用模板在Firefox中工作。进一步研究后,我意识到,click.btn compare
的事件正在被触发,尽管我不是在单击它们,而是在包含它们的li上。为什么会这样?