Если вы добавили событие с addEventListener()
, вы должны иметь ссылку на эту функцию, чтобы иметь возможность впоследствии удалить ее.
С анонимной функции, что это возможно только с arguments.callee
, и только тогда, когда вы находитесь внутри самой функции:
element.addEventListener('click', function() {
this.style.backgroundColor = '#cc0000';
this.removeEventListener('click', arguments.callee);
}, false);
, но обратите внимание, что это не является законным в ES5 «строгого режима».
Поэтому было бы просто лучше дать ваш обратный вызов имя, а затем использовать его в вызове removeEventLister()
:
element.addEventListener('click', function cb() {
this.style.backgroundColor = '#cc0000';
this.removeEventListener('click', cb);
}, false);
Демо на http://jsfiddle.net/alnitak/RsaVE/
Связанный вопрос о получении списка слушателей событий: http://stackoverflow.com/questions/7810534/have-any-browsers-implemented-the-dom3-eventlistenerlist/7814692#7814692 – user123444555621