Javascript can';t从document.keydown事件中解除自定义处理程序的绑定
我正在将自定义处理程序绑定到`文档:Javascript can';t从document.keydown事件中解除自定义处理程序的绑定,javascript,jquery,Javascript,Jquery,我正在将自定义处理程序绑定到`文档: this._bindCloseDlgEvents = function() { $(document).keydown(closeDlgByEscClick.bind(this)); }; 我已经检查并绑定了事件:$。\u数据(文档,“事件”)返回{keydown:Array[1]}。 现在,我正在尝试解除绑定同一个处理程序: this._unbindCloseDlgEvents = function() { $(document).off
this._bindCloseDlgEvents = function() {
$(document).keydown(closeDlgByEscClick.bind(this));
};
我已经检查并绑定了事件:$。\u数据(文档,“事件”)
返回{keydown:Array[1]}
。
现在,我正在尝试解除绑定同一个处理程序:
this._unbindCloseDlgEvents = function() {
$(document).off('keydown', closeDlgByEscClick);
};
检查$。\u数据(文档,“事件”)
-没有任何更改{keydown:Array[1]}
。
为什么会这样?如果我以这种方式解除绑定
$(document).off('keydown')
则事件解除绑定,但我只需要解除特定处理程序的绑定。因为您使用的是.bind()
,它将返回一个新的匿名函数
使用类似处理程序的
this._bindCloseDlgEvents = function() {
$(document).on('keydown.closedialogevent', closeDlgByEscClick.bind(this));
};
然后
bind()方法创建一个新函数,该函数在调用时具有
此关键字设置为提供的值,并具有给定的
调用新函数时,将在任何函数前面提供参数
演示:
this._unbindCloseDlgEvents = function() {
$(document).off('keydown.closedialogevent');
};