Backbone jQuery只能触发Template中元素的事件?

时间:2011-08-26 22:54:55

标签: javascript jquery backbone.js

我尝试使用以下命令在页面上的几个按钮上检测到鼠标时触发功能

    var view=Backbone.View.Extend({
     template:_.template($("tem").html()),
     events: {
          "click button" : "foo"
      },
     })

然后我将按钮放在模板脚本中,并在模板外部,它只是直接生成HTML。

但是,它只注册模板中按钮的点击,而不是直接HTML按钮。

如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

最容易做的事情可能是在视图中的初始化函数中设置自定义绑定,如下所示:

 var view = Backbone.View.Extend({
      template:_.template($("tem").html()),
      events: {
           "click button" : "foo"
      },
      initialize: function() {
           _.bindAll(this, 'foo'); //so foo's "this" is the view
           $('selector to direct HTML button').delegate('click', this.foo); //so when the out-of-template button is clicked, the foo handler is called
      }
 })

答案 1 :(得分:0)

您需要在视图中正确指定el。我没有。 因为事件{}调用了jQuery委托函数。并且委托被绑定为根元素