gpt4 book ai didi

javascript - 普通 Javascript 解除绑定(bind)文档事件

转载 作者:行者123 更新时间:2023-12-02 22:56:54 25 4
gpt4 key购买 nike

我在事件监听器和解除绑定(bind)方面遇到困难。我有以下代码:

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);

关于javascript - 普通 Javascript 解除绑定(bind)文档事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57942657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com