我的元素上有一个事件监听器,由于某种原因我不知道为什么会删除。
我这样设置:
for (i = 0; i < data[0].length; i++) {
(function(i){
document.getElementById(i).addEventListener('click',
function(){var self = this; begin(i,self,1);},false);})(i);
}
删除听众:
function begin(i,el,type){
console.log('test');
el.removeEventListener('click',function(){begin(i,el,type);},false);
}
但是某些原因仍然分配了事件监听器....我不能在这里得到什么?
答案 0 :(得分:2)
您需要保留对事件侦听器的引用,以便可以将其删除。如果愿意,可以将它存储在DOM元素上。
for (var i = 0; i < data[0].length; i++) {
(function(i){
var el = document.getElementById(i);
el['click-listener'] = function () {
var self = this;
begin(i, self, 1);
};
el.addEventListener('click', el['click-listener'],false);
})(i);
}
function begin(i, el, type) {
el.removeEventListener('click', el['click-listener'], false);
}