如何在代码阶段禁用绑定的JQUERY事件处理程序?
问题描述:
我不熟悉JQUERY,但是我有一个web应用程序,当我双击我的html主体上的一个单词时,弹出一个模式窗口。问题是因为modal div被加载到html body,当我点击模式时,处理程序被执行,我想禁用它。如何在代码阶段禁用绑定的JQUERY事件处理程序?
这就是我绑定的事件处理程序:
$("body").bind('dblclick', function(e){ ...
,我想在这里禁用它:
$('#element_to_pop_up').bPopup({
nOpen:function(){
答
您可以使用unbind()
方法:
$('#element_to_pop_up').bPopup({
nOpen:function(){
$("body").unbind('dblclick');
});
});
但是要记住当你关闭弹出窗口时,如果你希望它在弹出窗口后工作,你将不得不再次绑定它封闭。
答
使用更好on()
而不是bind()
功能:
从jQuery 1.7开始,.on()方法是 将事件处理程序附加到文档的首选方法。对于早期版本, .bind()方法用于将事件处理程序直接附加到 元素。
因此,
$('element').on('dblclick', function(e){...});
$('element').off()
- 将从给定元素中删除所有事件侦听器。 $('element').off('dblclick')
- 将只删除给定元素的双击
尝试'$(“body”)。unbind' – Rayon