我是JavaScript新手OOP !!!
我正在尝试删除eventlistener,但无法使其正常工作:
window.addEventListener('resize', this.adapt.eventBind(this), true);
window.removeEventListener('resize', this.adapt.eventBind(this), true);
这是绑定eventlistener的函数:
Function.prototype.eventBind = function(parentObj) {
var func = this;
var args = new Array();
for(var i = 0; i < arguments.length - 1; i++) {
args[i] = arguments[i+1];
}
var temp = function(evt) {
if(typeof(evt) != "undefined") {
if(typeof(evt["target"]) != "undefined") args[0] = evt["target"];
else args[0] = evt["srcElement"];
}
return func.apply(parentObj, args);
}
return(temp);
}
亲切的问候
答案 0 :(得分:3)
您传入removeEventListener
的功能必须是您提供的{em>相同功能addEventListener
;但在你的情况下,你正在创造一个新的,不同的功能。
所以你必须记住它,也许是在同一个对象上:
this.resizeListener = this.adapt.eventBind(this);
window.addEventListener('resize', this.resizeListener, true);
window.removeEventListener('resize', this.resizeListener, true);
(请注意,即使我在添加/删除时使用this.resizeListener
,它也没有this
问题代码看起来像通常那样,因为我已经使用你的{绑定了它{1}}。)