我正在尝试从元素中删除事件处理程序,附加jQuery的on()
并使用off()
将其删除。这通常会起作用,但在这种情况下,它没有做任何事情。
this.element.on('click', this.handler);
this.element.off('click', this.handler);
这样可行,但在我的情况下,由于将范围绑定到处理程序,它无效。
this.element.on('click', this.handler.bind(this));
this.element.off('click', this.handler.bind(this));
由于范围被绑定到处理程序,off
方法无法从元素中分离事件。
我尝试过使用引用,如下所示:
var self = this;
this.element.on('click', this.handler.bind(self));
this.element.off('click', this.handler.bind(self));
但没有运气......有人有想法解决这个问题吗?
答案 0 :(得分:5)
存储对单个函数的引用的替代解决方案是使用命名空间事件。
this.element.on('click.iamspecial', this.handler.bind(this));
this.element.off('click.iamspecial');
答案 1 :(得分:2)
我会尝试将显式绑定的东西作为参考:
var h = this.handler.bind(this);
this.element.on('click', h);
this.element.off('click', h);