2016-12-13 44 views
0

我会尝试解释我的问题。我使用的是mouseup事件侦听器,因此无论何时执行单击操作并且目标不是所需的元素,都可以进行检查。这是我使用的代码:jQuery - 元素“文档”的注册/取消注册监听器

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”注册的侦听器?

预先感谢您。

+0

看到你正在使用jQuery,看看事件命名空间,这可能会有所帮助►https://api.jquery.com/event.namespace/ – Nope

回答

2

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

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

这可以让你的命名空间,而把其他人到位删除事件。

$(document).off('mouseup.myNamespace');