注意:有很多与删除事件监听器相关的问题。在简单情况下,可以将匿名JS函数移动到具有指定名称的命名函数中,然后使用
例如:
去到
removeEventListener
调用该函数来解决问题。例如:
element.addEventListener("click", function(event){console.log("you clicked me");)})
去到
function youClickedMe(event) {console.log("you clicked me");}
element.addEventListener("click", youClickedMe)
然后在其他地方
element.removeEventListener("click", youClickedMe)
在我的情况下,这要复杂一些。
- 我有一个需要传递的封闭变量
- 我的事件绑定了新的事件监听器
当 DOM 进入特定模式(按下按钮,切换布尔值)后,我试图捕获用户单击左键鼠标(LMB)并将鼠标移动到某个特定区域时的操作。
到目前为止,它的效果还不错,请参见 fiddle:
但是,无论我尝试什么, "mousemove" 事件都无法消失。
此外,当我将 d3.zoom
/ d3.pan
函数添加到混合中时,情况变得更糟... 但那是另一个问题。
如何删除这个/这些添加的事件?你们有什么想法吗?
mouseDownAndMove
移到函数外面,那么它可能会起作用吗?好问题。该内容具有动态创建和删除的功能,因此可能会有多个实例都作用于同一个 SVG... 在创建它们的闭包中,我有一个全局切换变量,但这对需要一些本地变量的函数没有帮助... - SumNeuronmousedown
函数,但对于mouseDownAndMove
也是如此。如果您正在动态创建和销毁它们,则闭包可能不是最好的选择,因为使用它们可能会导致一些严重的内存泄漏。 - jake2389