繁体   English   中英

无法解除自定义处理程序与document.keydown事件的绑定

[英]can't unbind custom handler from document.keydown event

我将自定义处理程序绑定到`document的keydown事件:

this._bindCloseDlgEvents = function() {
    $(document).keydown(closeDlgByEscClick.bind(this));
};

我已经检查并绑定了事件: $._data( document, "events" )返回{keydown: Array[1]} 现在,我试图解除绑定相同的处理程序:

this._unbindCloseDlgEvents = function() {
    $(document).off('keydown', closeDlgByEscClick);
};

使用$._data( document, "events" ) -没有任何改变{keydown: Array[1]} 为什么这样? 如果我以这种方式取消绑定$(document).off('keydown')该事件将被取消绑定,但是我只需要取消绑定特定的处理程序即可。

由于您正在使用.bind()因此它将返回一个新的匿名函数。

使用命名空间事件处理程序,例如

this._bindCloseDlgEvents = function() {
    $(document).on('keydown.closedialogevent', closeDlgByEscClick.bind(this));
};

然后

this._unbindCloseDlgEvents = function() {
    $(document).off('keydown.closedialogevent');
};

.bind()

bind()方法创建一个新函数,该函数在被调用时将其关键字设置为提供的值,并在调用新函数时提供给定的参数序列。

演示: 小提琴

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM