Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击firefox中未触发的事件-主干_Javascript_Backbone.js - Fatal编程技术网

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 to
collection\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上。为什么会这样?