使用开/关事件绑定
Using on/off event bindings?
我正在尝试解除事件绑定。
我的活动是:
$(window).on('drop', this.onFileSelect.bind(this));
稍后I:
$(window).off('drop', this.onFileSelect.bind(this));
但我仍然可以摔倒。
我哪里错了?
在jQuery中识别事件侦听器的推荐方法(通常用于稍后删除)是使用事件名称空间,在您的情况下:
$(window).on('drop.onfileselect', this.onFileSelect.bind(this));
然后:
$(window).off('drop.onfileselect');
注意,onfileselect
是我选择的任意标识符,您可以提供自己的(插件)名称。
这里的问题是bind()
返回了一个新函数。因此,您试图解除绑定的函数与您正在绑定的函数不同。jQuery随后无法正确解除事件绑定。
保存您的函数的引用并使用该引用:
var myFn = this.onFileSelect.bind(this);
$(window).on('drop', myFn);
$(window).off('drop', myFn);
请确保两个作用域都可以访问该变量。
这个解决方案解释了这个问题。为了解决你的问题,你可以按照我在评论中说的做:$(window).off('drop')
。B) 使用类似haim770答案的名称空间。C) 使用这个答案(这是IMO最糟糕的解决方案)。
相关文章:
- 在D3.js中,有没有任何方法可以将x和y方向上的滚动事件绑定到平移svg
- 如何在tinymce编辑器中将点击事件绑定到html标签
- 如何将事件绑定到从AJAX请求注入的HTML
- 将click事件绑定到AngularJS指令中的子元素
- Jquery将事件绑定到页面上的多个实例
- 事件绑定到动态创建的元素
- 使用jQuery进行事件绑定
- 如何将单击事件绑定到其他类
- 更改事件绑定's函数在页面加载时调用
- Jquery事件绑定获胜'当作为方法调用时不起作用,但当直接在控制台中调用时会起作用
- 动态创建的DOM元素上的jQuery事件绑定
- 我是否可以使用 Angular 将鼠标向上事件绑定到文档正文
- 将事件绑定到除 data-rel= BACK 之外的所有锚标记
- 将函数事件绑定到更改函数的复选框/标签
- 使用 Angular 和 UI-bootstrap 对模态事件绑定无法工作的指令
- 聚合物 - 将事件绑定到动态创建的元素
- 将事件绑定到其他UI组件's函数,在Kendo MVVM中
- jQuery Mobile——事件绑定
- JQuery无法将模糊事件绑定到所有<输入>页面中的元素
- 将点击事件绑定到新元素&使得ID'是独一无二的