此问题与其他一些帖子中提到的问题类似:here和here。我觉得我理解这个概念,但我仍然遇到问题。
我正在使用Twitter Bootstrap的东西用于javascript弹出窗口; popover是我想绑定事件的地方。每次调用.popover('show')/。popover('hide')时,Bootstrap javascript都会插入/删除html。绑定到弹出框内的html的事件不会被调用。从我读到的,Backbone使用jQuery.delegate()所以如果html存在,但是某些东西不能正常工作应该无关紧要
events:
"click" : "popover"
"click .close" : "close_popover"
在这些事件中,第一个点击事件有效,但第二个事件无效(在弹出窗口内)。
popover: ->
@el.popover('show')
@delegateEvents(@events) #added from link
close_popover: ->
@el.popover('hide')
感谢。
处理重复问题的jsFiddle。添加了建议的link中的代码 - 仍然无效。
答案 0 :(得分:1)
您的代码看起来很好。您是否可以确认包含close
类的元素作为您视图的el
的子项存在,并且它实际上是您点击的内容? (尝试右键单击元素并使用Chrome Developer Tools或Firebug进行检查。)
答案 1 :(得分:0)
在撰写CoffeeScript时,您可能会遗漏一些至关重要的缩进:
而不是
events:
"click" : "popover"
"click .close" : "close_popover"
您想要缩进事件
events:
"click" : "popover"
"click .close" : "close_popover"
如果没有该缩进,事件将成为对象的属性,而不是“events”属性的属性,并且它们永远不会被注册。