【发布时间】:2013-08-22 13:46:14
【问题描述】:
我有一些代码将鼠标悬停事件处理程序添加到 svg 圆圈以显示工具提示。删除圆形元素时是否应该删除/取消绑定这些处理程序?我不知道这些处理程序是否附加到 svg 对象,我担心它可能会导致影子 dom 或内存泄漏。请参阅下面的代码:
circles.enter().append("svg:circle")
.on("mouseenter", function(d) {
// show tooltip
});
circles.exit()
.on("mouseenter", null) // necessary?
.remove();
【问题讨论】:
-
移除元素也应该移除事件监听器。
-
@LarsKotthoff 你的意思是开发者应该在移除元素时(手动)移除事件还是 D3 应该为我们做这件事?
-
您不能将事件附加到任何内容。它会在移除元素时自动移除事件处理程序。
标签: performance events memory-leaks d3.js