【发布时间】:2011-02-28 19:14:16
【问题描述】:
很抱歉,如果这是一个常见问题,但我无法通过搜索找到任何似乎相关的答案。
如果我像这样附加一个事件监听器:
window.addEventListener('scroll', function() { check_pos(box); }, false);
稍后尝试将其删除似乎不起作用,如下所示:
window.removeEventListener('scroll', function() { check_pos(box); }, false);
我认为这是因为 addEventListener 和 removeEventListener 方法想要引用相同的函数,而我为它们提供了匿名函数,虽然代码相同,但实际上并不相同。
如何更改我的代码以使对removeEventListener 的调用正常工作? “box”参数指的是我在屏幕上跟踪的<iframe> 的名称;也就是说,我希望能够为我拥有的每个<iframe> 订阅一次scroll 事件(数量不同),并且一旦check_pos() 函数测量到某个位置,它将调用另一个函数并且还移除事件监听器以释放系统资源。
我的预感是该解决方案将涉及一个闭包和/或命名匿名函数,但我不确定具体是什么样的,希望能举个具体的例子。
希望这是有道理的。
【问题讨论】:
标签: javascript events event-handling addeventlistener dom-events