如何删除不直接调用函数的事件监听器?
How to remove event listener that does not directly call a function?
我在成功 AJAX 请求后在我的 JS 中设置了以下事件侦听器:
var pageButtonsParentElement = document.getElementById("page-buttons");
pageButtonsParentElement.addEventListener('click',
event => {
let selectedPageButton = event.target;
if (selectedPageButton.classList.contains("page-item")){
updatePageButtonFormatting(selectedPageButton);
let selectedPageNumber = selectedPageButton.getAttribute("data-page-number");
inputObject = createInputObject(selectedPageNumber);
// new CallClass(inputObject);
}
})
根据 Mozilla 文档,我可以调用 removeEventListener() 方法并传入要删除的元素和函数 (https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener)。当我的函数是“事件 => ...”时,我不确定如何执行此操作
您需要对您要删除的函数的引用。
如果不保留对它的引用,则无法删除它。
保留对它的引用。
const listener = event => { ... };
foo.addEventListener("click", listener);
foo.removeEventListener("click", listener);
我在成功 AJAX 请求后在我的 JS 中设置了以下事件侦听器:
var pageButtonsParentElement = document.getElementById("page-buttons");
pageButtonsParentElement.addEventListener('click',
event => {
let selectedPageButton = event.target;
if (selectedPageButton.classList.contains("page-item")){
updatePageButtonFormatting(selectedPageButton);
let selectedPageNumber = selectedPageButton.getAttribute("data-page-number");
inputObject = createInputObject(selectedPageNumber);
// new CallClass(inputObject);
}
})
根据 Mozilla 文档,我可以调用 removeEventListener() 方法并传入要删除的元素和函数 (https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener)。当我的函数是“事件 => ...”时,我不确定如何执行此操作
您需要对您要删除的函数的引用。
如果不保留对它的引用,则无法删除它。
保留对它的引用。
const listener = event => { ... };
foo.addEventListener("click", listener);
foo.removeEventListener("click", listener);