使用附加事件处理程序删除DOM元素的正确方法是什么?

tom*_*cki 0 html dom dart

让我们假设我有这样的HTML:

<tr id="myRow">
 <td > some text</td>
 <td > some text</td>
...
</tr>
Run Code Online (Sandbox Code Playgroud)

并且每个TD 都附加了onClick事件的处理程序.

我想以正确的方式删除#myRow儿童.下面的代码会导致内存泄漏吗?

query('#myRow').innerHtml = '';
Run Code Online (Sandbox Code Playgroud)

删除所有子TD元素的正确方法是什么 - 不会导致内存泄漏?

我在这里看到类似的问题删除一个DOM对象(在Javascript中)如果附加了事件会导致内存泄漏吗?但是我不清楚删除元素是否会清除事件处理程序.

Sha*_*uli 6

通常,现代浏览器会尝试确保在删除或替换DOM元素时没有内存泄漏.因此,您应该能够设置innerHtml或调用element.children.clear()而不必担心导致内存泄漏的事件处理程序.

但有一点是:您通常希望避免添加对多个子元素执行相同操作的事件处理程序的情况.将事件处理程序附加到父级,然后使用targetcurrentTarget属性来区分附加处理程序的元素和触发事件处理程序的元素通常更有效.