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 に答える