Javascript:删除附加了匿名函数的事件侦听器到对象的方法

时间:2010-11-27 10:44:31

标签: javascript event-handling

e.g:

function myclass (htmlelement) {
  this.element = htmlelement;
}

myclass.prototype.hoverfunc = function() {
  alert (this.element.id);
}

myclass.prototype.doListen = function() {
  this.element.addEventListener ('mouseover', function() {this.hoverfunc();}.bind(this),false);
}

elListen = new myclass (document.getElementById('foo'));
elListen.doListen();

如何创建一个从元素中删除侦听器的方法?

1 个答案:

答案 0 :(得分:3)

为什么要保留匿名功能?

myclass.prototype.doListen = function() {
  this.listener = function() {this.hoverfunc();}.bind(this);
  this.element.addEventListener ('mouseover', this.listener, false);
}


myclass.prototype.stopListen = function() {
  this.element.removeEventListener('mouseover', this.listener);
}

另外,请注意addEventListener()/removeEventListener(),因为它们是基于DOM Level 2标准的 - 这是IE不能做的。