1

我的元素上有一个事件侦听器,由于某种原因我不知道为什么没有删除它。

我这样设置:

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);
}

但是由于某种原因仍然分配了事件侦听器....我在这里没有得到什么?

4

1 回答 1

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);
}
于 2013-11-04T02:05:38.457 回答