Backbone没有将事件绑定到jQuery Popover

时间:2011-11-02 16:14:07

标签: jquery backbone.js coffeescript

此问题与其他一些帖子中提到的问题类似:herehere。我觉得我理解这个概念,但我仍然遇到问题。

我正在使用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中的代码 - 仍然无效。

2 个答案:

答案 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”属性的属性,并且它们永远不会被注册。