jQuery - 注册/取消注册元素“document”的监听器

时间:2016-12-13 10:30:55

标签: javascript jquery events listeners

我会尝试解释我的问题。我正在使用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”取消注册已注册的侦听器?

提前谢谢。

1 个答案:

答案 0 :(得分:2)

使用.on()语法时,您可以命名事件。

$(document).on('mouseup.myNamespace', function(e){ ... }

这允许您按名称空间删除事件,同时保留其他事件。

$(document).off('mouseup.myNamespace');
相关问题