如果附加的函数是闭包,如何删除事件侦听器
How to remove event listener if the attached function is a closure?
示例:
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()
代码的位置,可以将函数引用保存在闭包变量中。
相关文章:
- 使用php或javascript从facebook相册URL中删除多余的部分
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 如何删除多行HTML排列中的空白
- 如何从rails中的代码中删除新行( )
- 删除对HTML元素的拖动
- 当图像转换为本地存储的DataURL时,EXIF被删除
- 按顺序添加和删除类
- 从 DOM 中删除/删除 Javascript 用户定义的数组
- 命名函数“;删除“..删除是一个保留字
- 使用具有多个参数的猫鼬删除/删除
- 删除/删除 HTML 页面中的“:” 冒号
- 滚动条从何而来,如何删除它
- 如何删除/删除Firebase上的节点
- 我想,当我按下删除按钮删除删除按钮所代表的元素时
- 主干:查看删除/删除
- 删除/删除部分隐藏字段值的按钮单击
- Javascript从数据库中删除/删除表行
- 使用jQuery从HTML表中删除(删除)表行
- 删除删除ng网格中最后一行的功能
- 如何通过具有数组行的第一项的值来删除/删除 javascript 数组中的行