gpt4 book ai didi

javascript - 如何删除使用闭包添加的 EventListener?

转载 作者:数据小太阳 更新时间:2023-10-29 03:49:57 26 4
gpt4 key购买 nike

这基本上是一个后续问题:Can't pass event to addEventListener: closure issue .

我几乎阅读了所有相关问题,但找不到答案。

下面的函数是在一个循环中执行的,其中参数是从数据数组中提取的。使用此功能,我可以将不同的/新的参数传递给事件监听器的每个实例。 outerfunction 允许将参数的值封装在闭包中,以便实际值可用,而不仅仅是对持有者的引用。此外,传递事件函数将事件传递给响应函数。最后,responsefunction 具有所有适当的信息以响应点击事件。这很好用。问题是,我不知道以后如何删除事件监听器。我已经尝试了我能想到的一切。请帮忙。我怎样才能:removeEventListener?

(function outerfunction(i, f) {
elementname.addEventListener("click", function passeventfunction(e) {
responsefunction(e, f, i); });})(parameter1, parameter2);

另外,如果有人可以帮助澄清这里发生的事情。这是闭包中的闭包吗?是否有留下内存泄漏之类的危险?

最佳答案

您必须保留对听众的引用:

var listeners = {};
for(/* ... */) {
(function outerfunction(i, f) {
var listener = function(e) {
responsefunction(e, f, i);
}
elementname.addEventListener("click", listener);
listeners[elementname.id] = listener; // use something meaningful
// as your keys
})(parameter1, parameter2);
}

// Removing the listener later:
elementname.removeEventListener("click", listeners[elementname.id]);

关于javascript - 如何删除使用闭包添加的 EventListener?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19774202/

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