如何使用匿名函数取消绑定文档按键事件

时间:2015-12-26 18:49:20

标签: javascript jquery

这是页面的代码。 我无法修改此内容。

var Example = {};

Example.create = function() {
    var obj = new Example.object();
    return obj;
}

Example.object = function(){
    this.initialize = initialize;
    function initialize() {
        window.addEventListener('load', activate);
    }
    function activate() {
        document.addEventListener('keypress', keyPressed);
    }
    function keyPressed(e) {
        alert("Hello!");
    }
};

Example.defaultObject = Example.create();
Example.defaultObject.initialize();

我尝试了很多东西......

document.onkeypress = null;
document.keypress = null;
document.removeEventListener('keypress');
$(document).unbind('keypress');
$(document).off("keypress");
$("*").unbind('keypress');
$(document).bind('keypress', function(e) { e.stopPropagation(); });

但都失败了。

如何取消绑定文档按键事件?

2 个答案:

答案 0 :(得分:1)

您必须传递侦听器才能将其删除:(一个指向函数的变量,即函数名称)

document.removeEventListener('keypress',  keyPressed);

https://developer.mozilla.org/de/docs/Web/API/EventTarget/removeEventListener

您必须将其保存在某处以便以后将其删除

答案 1 :(得分:0)

问题的根本原因是In [13]: st.norm.interval(0.95, loc=np.mean(a), scale=st.sem(a)) Out[13]: (10.23484868811834, 12.76515131188166) 方法。该方法期望第二个参数是监听方法

removeEventListener

在这里,您可以找到问题的解决方案。

document.removeEventListener('keypress', Example.defaultObject.keyPressed);
var Example = {};

Example.create = function() {
    var obj = new Example.object();
    return obj;
}

Example.object = function(){
    this.initialize = initialize;
    function initialize() {
        window.addEventListener('load', activate);
        document.getElementById('disable').addEventListener('click', deActivate);
    }
    function activate() {
        document.addEventListener('keypress', keyPressed);
    }
    function deActivate() {
        document.removeEventListener('keypress', keyPressed);
        document.querySelector('h1').innerHTML = 'Page Key Press Listener Removed';
    }
    function keyPressed(e) {
        alert("Hello!");
    }
};

Example.defaultObject = Example.create();
Example.defaultObject.initialize();