Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript can';t从document.keydown事件中解除自定义处理程序的绑定_Javascript_Jquery - Fatal编程技术网

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');
};