removeEventListener on anonymous functions in JavaScript removeEventListener on anonymous functions in JavaScript javascript javascript

removeEventListener on anonymous functions in JavaScript


if you are inside the actual function, you can use arguments.callee as a reference to the function. as in:

button.addEventListener('click', function() {      ///this will execute only once      alert('only once!');      this.removeEventListener('click', arguments.callee);});

EDIT:This will not work if you are working in strict mode ("use strict";)


I believe that is the point of an anonymous function, it lacks a name or a way to reference it.

If I were you I would just create a named function, or put it in a variable so you have a reference to it.

var t = {};var handler = function(e) {    t.scroll = function(x, y) {        window.scrollBy(x, y);    };    t.scrollTo = function(x, y) {        window.scrollTo(x, y);    };};window.document.addEventListener("keydown", handler);

You can then remove it by

window.document.removeEventListener("keydown", handler);   


A version of Otto Nascarella's solution that works in strict mode is:

button.addEventListener('click', function handler() {      ///this will execute only once      alert('only once!');      this.removeEventListener('click', handler);});