javascript - 回调里面的Javascript removeEventListner?
问题描述
如何添加只会触发一次的EventListener+向它传递参数?
function () {
var params = ...
elem.addEventListener('load', function(event, params) {
elem.removeEventListner('load', ...);
do_something(params)
}
}
解决方案
使用 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>
推荐阅读
- angularjs - Angularjs中的文件上传问题
- unicode - 给定一个 UTF-8 字符串,我可以在搜索 ASCII 字符时将其视为字节字符串吗?
- tomcat - Cookie 安全标签在登录页面上工作,但在登录后不起作用
- javascript - 使用鼠标滚轮时绝对定位元素的闪烁
- typo3 - Typo3 自定义页脚菜单
- java - 具有不同 idp 的多个 SSO 集成
- python - LightGBM:ValueError:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()
- javascript - 在 Codeceptjs 中没有有效负载的 SendPostRequest
- java - Apache Lucene 索引器搜索
- ruby-on-rails - 使用 Ruby on Rails 仔细检查/帮助建模关系