jQuery - 为元素 "document" 注册/取消注册侦听器
jQuery - Register / unregister listener for element "document"
我会尽力解释我的问题。我正在使用 mouseup
事件侦听器,因此我可以检查何时执行了点击并且目标不是所需的元素。这是我正在使用的代码:
function clickOutListener(element, callbackFunction){
$(document).mouseup(function(e){
if(!$(element).is(e.target) && $(element).has(e.target).length === 0) callbackFunction.call(this, null);
});
}
如您所见,事件侦听器绑定到全局文档元素,解除绑定侦听器的方式为:
$(document).off("mouseup");
这是我需要实现的目标。如果我取消绑定 mouseup
侦听器,它将影响使用此侦听器的其他元素(下拉菜单和其他功能)。我必须猜测,每次我注册一个监听器时,它都不会覆盖以前定义的监听器,而是添加定义的目标函数。
如何访问相同侦听器的不同定义目标函数?
$(document).mouseup(funct1);
$(document).mouseup(funct2);
$(document).mouseup(funct3);
如何取消注册仅用于 "funct2" 的已注册侦听器?
提前致谢。
您可以在使用 .on()
语法时为您的事件命名。
$(document).on('mouseup.myNamespace', function(e){ ... }
这允许您按命名空间删除事件,同时保留其他事件。
$(document).off('mouseup.myNamespace');
我会尽力解释我的问题。我正在使用 mouseup
事件侦听器,因此我可以检查何时执行了点击并且目标不是所需的元素。这是我正在使用的代码:
function clickOutListener(element, callbackFunction){
$(document).mouseup(function(e){
if(!$(element).is(e.target) && $(element).has(e.target).length === 0) callbackFunction.call(this, null);
});
}
如您所见,事件侦听器绑定到全局文档元素,解除绑定侦听器的方式为:
$(document).off("mouseup");
这是我需要实现的目标。如果我取消绑定 mouseup
侦听器,它将影响使用此侦听器的其他元素(下拉菜单和其他功能)。我必须猜测,每次我注册一个监听器时,它都不会覆盖以前定义的监听器,而是添加定义的目标函数。
如何访问相同侦听器的不同定义目标函数?
$(document).mouseup(funct1);
$(document).mouseup(funct2);
$(document).mouseup(funct3);
如何取消注册仅用于 "funct2" 的已注册侦听器?
提前致谢。
您可以在使用 .on()
语法时为您的事件命名。
$(document).on('mouseup.myNamespace', function(e){ ... }
这允许您按命名空间删除事件,同时保留其他事件。
$(document).off('mouseup.myNamespace');