Javascript 如何删除由匿名函数声明的元素的事件?

Javascript 如何删除由匿名函数声明的元素的事件?,javascript,dom-events,anonymous-function,Javascript,Dom Events,Anonymous Function,示例代码: element.addEventListener('click',function () { this.style.backgroundColor = '#cc0000' //after element was clicked once what to do here to remove this event ? },false) 在何处执行此操作,是否可以直接在我放置注释的函数中执行此操作?如果使用addEventListener()添加事件,则必须具有对该函数的引用才能

示例代码:

element.addEventListener('click',function () {
  this.style.backgroundColor = '#cc0000'
  //after element was clicked once what to do here to remove this event ?
},false)

在何处执行此操作,是否可以直接在我放置注释的函数中执行此操作?

如果使用
addEventListener()
添加事件,则必须具有对该函数的引用才能随后删除它

匿名函数只能使用
参数。被调用方
,并且只能在函数本身中使用时:

element.addEventListener('click', function() {
    this.style.backgroundColor = '#cc0000';
    this.removeEventListener('click', arguments.callee);
}, false);
但请注意,这在ES5“严格模式”中是不合法的

因此,最好为回调函数指定一个名称,然后在调用
removeventlister()
时使用该名称:


上的演示不再是真正的匿名,但这里是我能想到的最好的(使用闭包):


编辑:+1用于Alnitak修改后的答案-比这个答案更简洁。

但我想知道他们是否真的会删除
参数。浏览器中的被调用方
功能可能会被弃用几十年,效果很好。@rsk82如果代码声明
使用严格,它已经被删除获取事件侦听器列表的相关问题:
element.addEventListener('click', function cb() {
    this.style.backgroundColor = '#cc0000';
    this.removeEventListener('click', cb);
}, false);
(function(){
  var handler = function(){
    this.style.backgroundColor = '#cc0000'
    element.removeEventListener('click', handler, false);
  };
  element.addEventListener('click', handler, false);
})();