13

我有坠落事件哈希 -

events:
  'click #someButton : 'someFunction'

关闭我尝试过的视图

close:
  $("#someButton").unbind("click")

   `close:

       $("#someButton").remove()`

但是 someFunction 仍然不止一次被触发。如何从按钮取消绑定此事件?

我也试过

$(@el).find("#someButton").unbind("click") as well 
4

3 回答 3

29

Backbone.js 视图事件被委托给视图el(因此没有事件绑定到您的#someButton元素,而是当点击事件冒泡时,el它会检查事件是否来自与该选择器匹配的元素),就是这种情况要删除您需要将其从 中删除的事件el,例如

  $(this.el).off('click', '#someButton');

如果要删除所有委托事件,只需使用视图的取消委托方法

于 2012-09-10T21:19:35.633 回答
0

杰克的解释和回答很棒。不幸的是,他的代码示例对我不起作用。而不是使用:

 $(this.el).off('click', '#someButton');

我不得不使用:

 this.$el.off('click', '#someButton');

这对我来说是有道理的,因为该事件必然是this.$el对象。

于 2015-04-23T18:03:45.313 回答
0

为了进一步补充,我this.$el.off();在子视图中使用了一个初始化来销毁与子视图相关的所有事件。同一事件将触发 X 次调用数据刷新。

我看到重复的目标使用:

var $target = $(e.currentTarget);
console.log($target);

我会在答案中添加评论,但我的声誉很低。

于 2016-02-25T17:38:32.230 回答