示例代码:
element.addEventListener('click',function () {
this.style.backgroundColor = '#cc0000'
//after element was clicked once what to do here to remove this event ?
},false)
在哪里做,是否可以直接在我发表评论的函数中?
答案 0 :(得分:7)
如果您使用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);
演示
答案 1 :(得分:2)
不再是真正的匿名,但这是我能想到的最好的(使用闭包):
(function(){
var handler = function(){
this.style.backgroundColor = '#cc0000'
element.removeEventListener('click', handler, false);
};
element.addEventListener('click', handler, false);
})();
编辑:Alnitak修改后的答案+1 - 它比这个更简洁。