从 jQuery 处理程序取消绑定事件
Unbind events from jQuery handler
我正在尝试解决旧系统,并在某些情况下劫持一个提交按钮,对其应用处理程序,然后在完成后取消绑定此处理程序。我正在使用bind
和unbind
但每次启动相关表单时,事件都会累积绑定。
class MyForm(){
constructor(){
// button in question
this.$submit = $('#submit');
this.$submit.bind('click', this.submit.bind(this));
return this;
}
submit(){
return this.doAjaxStuff();
}
doAjaxStuff(){
var self = this;
return $.post(file, data).always(function(){
self.$submit.unbind('click', self.submit);
});
}
}
不幸的是,每次我创建一个新MyForm
事件都会再次绑定,但永远不会解除绑定。
简单的解决方法是首先使用off()
并将事件命名为命名空间。删除命名空间事件不会干扰同一事件的其他侦听器
this.$submit.off('click.special').on('click.special', this.submit.bind(this));
请注意,bind()
和 unbind()
已弃用 .. 请改用 on()
和 off(0
。
更好的方法是在页面加载时委托一次,而不是继续调用同一类
相关文章:
- 在offline.js中绑定事件
- 如何在angularjs中检查Kendo树视图数据绑定事件
- 在页面高度更改时绑定事件
- 在页面重新加载后绑定事件,并仅使用Knockout.js、html和js创建新的html元素
- 使用onbeforeunload绑定事件
- 传递类似绑定事件的参数
- 如何对修改后的元素重新绑定事件
- 聚合物模板自动绑定:在模板绑定事件之前的核心选择火灾
- Jquery差异B/w Jquery绑定事件
- SessionStorage绑定事件
- extjs,如何在表单操作中绑定事件
- 模拟 Web 浏览器方向更改事件以使用 Jasmine 测试绑定事件处理程序函数
- 绑定事件发射器上的单个事件
- 如何在绑定事件期间排除元素
- 将鼠标悬停在位于我的页面上的 iframe 上的绑定事件,其中包含包含的 src
- 在 jQuery 中创建 DOM 之前的绑定事件
- 如何在页面加载时在 ajax 调用中绑定事件处理程序后触发事件
- 使用 ajax 加载的页面绑定和取消绑定事件处理程序
- 咖啡脚本构造函数中的绑定事件
- 将数据添加到动态创建的元素和绑定事件