取消绑定主干视图事件

Unbind Backbone View Events

本文关键字:视图 事件 绑定 取消      更新时间:2023-09-26

我有下降事件哈希-

events:
  'click #someButton : 'someFunction'

为了关闭视图,我尝试了

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

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

但someFunction仍被多次解雇。如何从按钮解除此事件的绑定?

我也试过

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

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

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

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

Jack的解释和回答都很棒。不幸的是,他的代码示例对我不起作用

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

我不得不使用:

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

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

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

我看到重复的目标使用:

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

我想在回答的基础上加一条评论,但我的声誉很低。