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');