Javascript removeEventListener不删除侦听器
我的元素上有一个事件监听器,由于某种原因我不知道为什么它不会被删除 我是这样设置的:Javascript removeEventListener不删除侦听器,javascript,Javascript,我的元素上有一个事件监听器,由于某种原因我不知道为什么它不会被删除 我是这样设置的: 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); } 但由于某
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);
}
但由于某些原因,事件侦听器仍然被分配。。。。我这里没有得到什么?您需要保留对事件侦听器的引用,以便删除它。如果愿意,可以将其存储在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);
}
for(变量i=0;i
我感觉这是因为您在removeEventListener
中引用的函数与传递到addEventListener
中的函数不同(匿名)。
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);
}