我有一个要删除事件监听器的场景。
export const addEventToDropDown = (callback) => {
document.addEventListener("keydown", (event) => {
if (event.key === "Backspace" && document.activeElement.type === "select-one") {
event.target.value = "";
callback(event);
}
}, true);
}
export const removeEventListner = () => {
//document.removeEventListener("keydown");
}
答案 0 :(得分:0)
只有引用了事件侦听器,您才能删除它。
由于您直接将箭头函数传递给addEventListener
(例如,没有将其存储在变量中,然后在对addEventListener
的调用中使用该变量),您就没有了对此的引用。
因此:您不能。
答案 1 :(得分:0)
您可以动态创建处理程序,并将其引用存储在闭包中。 这样,可以使用removeEventListener
注销处理程序。const createKeydownHandler = callback => event => {
if (event.key === "Backspace" && document.activeElement.type === "select-one") {
event.target.value = "";
callback(event);
}
};
let keydownHandler;
export const addEventToDropDown = (callback) => {
keydownHandler = createKeydownHandler(callback);
document.addEventListener("keydown", keydownHandler, true);
}
export const removeEventListner = () => {
document.removeEventListener("keydown", keydownHandler)
}