如何解除由全局函数定义的事件的绑定



我有一个绑定到全局函数的事件(我需要它来跟踪函数本身)。

例如

 window['mUpEventHandler'] = function(){
      // ...
 }

它通过绑定到$("body")

 .on('mouseup')

现在我知道我可以像在中一样知道处理程序的名称来解除绑定

 $('body').off(myHandler) // # myHandler = mUpEventHandler  for example

然而,在全局定义它时,我有函数本身,但没有它的名称。

我该如何克服这一点?

可以使用名称空间绑定吗。然后删除基于命名空间的事件?

https://css-tricks.com/namespaced-events-jquery/

window['mUpEventHandler'] = function () {
  alert('test');
}

$('body').on('mouseup.mUpEventHandler', function () {
  mUpEventHandler()
});

$('button').click(function () {
  $('body').off('.mUpEventHandler');
})

http://jsfiddle.net/SeanWessell/5p7t22mh/

$('body').off(myHandler)中,myHandler不是一个"名称",而是一个引用函数的变量。

若要解除事件处理程序的绑定,您需要对该函数的引用。所以

$('body').off(mUpEventHandler)
// or
$('body').off(window.mUpEventHandler)

会很好用的。

相关内容

  • 没有找到相关文章

最新更新