javascript - 纯 Javascript 取消绑定文档事件
问题描述
我对事件侦听器和解除绑定有困难。我有以下代码:
function delegate(el, evt, sel, handler) {
el.addEventListener(evt, function(event) {
var t = event.target;
while (t && t !== this) {
if (t.matches(sel)) {
handler.call(t, event);
}
t = t.parentNode;
}
});
}
我应用这样的功能:
function captureMouseDown() {
console.log('mouse downed');
}
delegate(document, 'mousedown', '.js-flex', captureMouseDown);
如何取消对文档和/或选择器 js-flex 的事件的委托
解决方案
一种选择是delegate
返回传递给的函数addEventListener
,然后你可以removeEventListener
用它调用:
function delegate(el, evt, sel, handler) {
const listener = function(event) {
var t = event.target;
while (t && t !== this) {
if (t.matches(sel)) {
handler.call(t, event);
}
t = t.parentNode;
}
};
el.addEventListener(evt, listener);
return listener;
}
const listener = delegate(document, 'mousedown', '.js-flex', captureMouseDown);
// ...
document.removeEventListener('mousedown', listener);
推荐阅读
- python - 无法使用 Python 请求会话模块登录网站
- node.js - 如何在开发模式下针对大量记录优化 MongoDB 查询?
- python - 遍历 pandas 数据框中的特定列和行以执行检查
- javascript - 使用 JQuery 访问嵌套的 CSS 选择器
- python - / 不支持的操作数类型:'Adam' 和 'int
- jquery - 如何使用 JQuery 在导航栏中更改列表项/元素的背景颜色?
- json - 没有从烧瓶路由到 ReactJS 前端的响应
- corda - selection.AbstractCashSelection.unconsumedCashStatesForSpending 时出现不可恢复的检查点错误 - 硬币选择失败
- mongoose - 对具有 id 数组的模型执行单个查询计数?
- docker - 是否可以自定义 swarm 端口?如果是这样,该怎么做?