取消绑定骨干查看事件

时间:2012-09-10 21:16:27

标签: javascript events backbone.js coffeescript

我有下降事件哈希 -

events:
  'click #someButton : 'someFunction'

要关闭我尝试的视图

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

   `close:

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

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

我也试过

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

3 个答案:

答案 0 :(得分:28)

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

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

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

答案 1 :(得分:0)

杰克的解释和答案都很棒。不幸的是,他的代码示例并不适用于我。而不是使用:

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

我不得不使用:

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

这对我来说很有意义,因为事件绑定到this.$el对象。

答案 2 :(得分:0)

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

我使用以下方法看到了重复的目标:

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

我会在答案中添加评论,但声誉不佳。