我有下降事件哈希 -
events:
'click #someButton : 'someFunction'
要关闭我尝试的视图
close:
$("#someButton").unbind("click")
和
`close:
$("#someButton").remove()`
但是someFunction仍然不止一次被解雇。如何从按钮取消绑定此事件?
我也试过
$(@el).find("#someButton").unbind("click") as well
答案 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);
我会在答案中添加评论,但声誉不佳。