我有一个绑定到全局函数的事件(我需要它来跟踪函数本身)。
e.g。
window['mUpEventHandler'] = function(){
// ...
}
通过
绑定到$('body') .on('mouseup')
现在我知道我可以解除它知道处理程序的名称,如
$('body').off(myHandler) // # myHandler = mUpEventHandler for example
然而,当全局定义它时,我有函数本身但不是它的名字。
我如何克服这个问题?
答案 0 :(得分:1)
可以使用命名空间进行绑定。然后根据命名空间删除事件?
https://css-tricks.com/namespaced-events-jquery/
window['mUpEventHandler'] = function () {
alert('test');
}
$('body').on('mouseup.mUpEventHandler', function () {
mUpEventHandler()
});
$('button').click(function () {
$('body').off('.mUpEventHandler');
})
答案 1 :(得分:0)
在$('body').off(myHandler)
中,myHandler
不是"名称",它是引用功能的变量。
要取消绑定事件处理程序,您需要对该函数的引用。所以
$('body').off(mUpEventHandler)
// or
$('body').off(window.mUpEventHandler)
工作得很好。