关于移除事件时有参数的函数移除问题

正常绑定和移除

// bind event
element.addEventListener('click', _bindEventHandler)
// unbind event
element.removeEventListener('click', _bindEventHandler)

但是如果需要传参的话可以这样做

element.addEventListener('click', function() {
  _bindEventHandler(param1, param2)
})

这样可以正常传参,但是会有一个问题,就是不能够移除事件,因为匿名函数的指向不同

解决办法:

// 设置参数
element._params = { param1, param2 }
// 绑定事件
element.addEventListener('click', _bindEventHandler)
// 在函数中获取参数
function _bindEventHandler(event) {
  const params = event.target._params
  // ...do sth after
}
原文地址:https://www.cnblogs.com/pengfei25/p/15127397.html