var MyClass = function () {}
MyClass.prototype.listener=null;
MyClass.prototype.addSpan = function (el) {
var span = document.createElement('span');
span.innerHTML = "Text here";
el.appendChild(span);
span.addEventListener('click', (function (obj) {
return obj.listener = function () {
obj.removeSpan(this); // here 'this' refers to 'span'
}
})(this), false);
}
MyClass.prototype.removeSpan = function (el) {
alert('removing span');
el.removeEventListener('click', this.listener, false);
// .... remove span ....
}
myclass = new MyClass();
myclass.addSpan(document.getElementById('box'));
Без ссылки на слушателя вы не сможете удалить его, поэтому я также добавил свойство (слушатель) в прототип MyClass, а затем возвратил ссылку как return obj.listener
, а также вам нужно передатьобъект, который я передал, obj.removeSpan(this);
и в removeSpan
, который я получил с el
, чтобы я мог сделать el.removeEventListener
, надеюсь, это поможет.
Вы также можете сделать это
var MyClass = function () {this.listener=null;}
вместо
MyClass.prototype.listener=null;
Вот пример .