我知道您可以使用闭包和匿名函数将参数传递给事件处理程序,例如:
function addClick(el, a, b) {
el.addEventListener('click', function(e) {
//a and b are available here
});
}
但问题是,当你这样做时,你不能删除事件监听器,因为它是匿名的。可能需要能够传递参数并在某些时候删除处理程序,所以我想知道这是否可能以某种方式,或者是否有另一种方法来实现相同的目的。
我唯一能想到的就是向处理程序添加属性并以这种方式访问它们:
var handler = function() {
console.log(handler.a);
console.log(handler.b);
}
handler.a = 'argument1';
handler.b = 'argument2';
el.addEventListener('click', handler);