[英]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()方法创建一个新函数,该函数在被调用时将其关键字设置为提供的值,并在调用新函数时提供给定的参数序列。
演示: 小提琴
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.