示例:
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));
}
}
}
它不起作用,我该怎么办?
答案 0 :(得分:2)
要调用.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()
代码的位置,您可以将函数引用保存在闭包变量中。