首页 > 解决方案 > 回调里面的Javascript removeEventListner?

问题描述

如何添加只会触发一次的EventListener+向它传递参数?

function () {
    var params = ...

    elem.addEventListener('load', function(event, params) {
        elem.removeEventListner('load', ...);
        do_something(params)
    }
}

标签: javascripteventsevent-handlingdom-events

解决方案


使用 addEventListener 时,您可以提供一个配置对象作为第二个参数,您可以在其中指定它应该运行一次(如下面的代码)。关于将额外参数传递给事件回调,您可以通过提供上下文和额外参数来使用方法绑定

var button = document.querySelector('#btn');


button.addEventListener('click', function (params, ev) {
  
  console.log(params);
  
}.bind(button, { name: 'test'}), {
  once: true
})
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>

</head>
<body>
 <button id="btn">click</button>
</body>
</html>


推荐阅读