我正在编写一个普通的 JavaScript工具,当启用它时,它会为传递给它的每个元素添加事件侦听器。
我想做这样的事情:
var do_something = function (obj) {
// do something
};
for (var i = 0; i < arr.length; i++) {
arr[i].el.addEventListener('click', do_something(arr[i]));
}
不幸的是,这不起作用,因为据我所知,在添加事件侦听器时,参数只能传递给匿名函数:
for (var i = 0; i < arr.length; i++) {
arr[i].el.addEventListener('click', function (arr[i]) {
// do something
});
}
问题是我需要能够在禁用该工具时删除事件侦听器,但我认为不可能使用匿名函数删除事件侦听器。
for (var i = 0; i < arr.length; i++) {
arr[i].el.removeEventListener('click', do_something);
}
我知道我可以很容易地使用 jQuery 来解决我的问题,但我正在尝试最小化依赖关系。jQuery 必须以某种方式解决这个问题,但代码有点像丛林!