gpt4 book ai didi

javascript - 如果附加函数是闭包,如何删除事件监听器?

转载 作者:行者123 更新时间:2023-11-29 14:47:16 25 4
gpt4 key购买 nike

例子:

for (var i = 0 ; i < a.length ; i ++) {
a[i].addEventListener("touchend", f(i));
}

function f(param) {
return function() {
for (var i = 0 ; i < a.length ; i ++) {
a[i].removeEventListener("touchend", f(i));
}
}
}

就是不行,我该怎么办?

最佳答案

为了调用.removeEventListener(),您必须保留对该函数的引用。这意味着您必须为该函数提供一个标识符,然后您可以在 .addEventListener().removeEventListener() 中使用该标识符。该符号可以是本地符号(不必是全局符号),但您需要一个符号才能在两个地方使用它。

如果您能稍微解释一下您试图用您显示的代码完成什么以及您想在哪里使用 .removeEventListener(),我们可能会提供更具体的有关如何更改它的建议(我不了解您要用它做什么)。

也许是这样的:

var temp;
for (var i = 0 ; i < a.length ; i ++) {
temp = f(i);
a[i].touchEndHandler = temp;
a[i].addEventListener("touchend", temp);
}

然后,稍后,您可以:

x.removeEventListener("touchend", x.touchEndHandler);

或者,根据您的 .removeEventListener() 代码所在的位置,您可以将函数引用保存在闭包变量中。

关于javascript - 如果附加函数是闭包,如何删除事件监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31259046/

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