从动态元素中删除onClick
removing onClick from dynamic elements
我应该删除动态clickHandlers到动态创建的html标签,还是由垃圾收集器自动处理。
我的主要浏览器是Safari(嵌入在iOS应用程序),但我想我读到IE有内存泄漏问题。
var li = document.createElement('li');
li.addEventListener('click', function(){});
所以如果这个元素被从DOM中删除以后,我应该删除clickHandler,只是以防万一,请让我知道如何删除属性clickHandler?
li.removeEventListener("click", function_name);
这将删除事件监听器
来源:http://www.w3schools.com/jsref/met_element_removeeventlistener.asp
对于匿名函数,它们的意义在于没有引用并且缺少名称,因此对于removeEventListener()
,您将需要一个命名函数。
如果在删除元素后没有对元素的引用,则GC应该清理它引用的处理程序函数。所以你不需要做任何事情。
但是如果IE有这样的错误,您可以使用removeEventListener
来删除处理程序,但这要求您使用命名函数,因为您必须给removeEventListener
提供与调用addEventListener
时相同的函数,并且匿名函数将永远不会彼此相同。
function myClickHandler {
...
}
var li = document.createElement('li');
li.addEventListener('click', myClickHandler);
...
li.removeEventListener('click', myClickHandler);
myClickHandler = null;
li.parentNode.removeChild(li);
myClickHandler = null;
是必需的,否则函数名将包含对处理程序函数的引用,因此它不会被GCed。
如果您有多个li,并且它们都使用相同的处理程序函数,则不应该这样做。无论您有多少个li,它们都只是指向同一个函数,因此它不会占用大量内存。
相关文章:
- .hasClass 在 onclick 函数中不起作用,但删除和添加类函数可以
- "/"当onclick事件时从URL中删除
- 如何为span元素添加/删除类onclick
- 如何使用onclick javascript动态添加,删除列表中的节点
- 删除/隐藏 javascript 中的选择选项而不会使其看起来很尴尬(需要延迟 select 元素的本机 onclick
- Onclick 事件以删除文本输入字段中的默认值
- Jquery 日期选择器删除 onclick 和 onchange 并添加默认属性
- 如何删除出现在弹出窗口上的onclick按钮-CSS&JS相关
- 添加/删除类onclick with JavaScript no librarys
- 删除部分除法的onclick侦听器
- jQuery Mobile onclick事件不会删除已禁用的类ui
- 使用JavaScript onclick删除元素,并在SQL中保存变量
- jQuery验证:删除附近的错误消息onClick
- 通过onclick添加/删除元素
- HTML、CSS和Javascript:如何使onclick甚至删除输入文本字段中的文本
- 当使用javascript onclick I'我在IE中得到了一个小链接图标,我该如何删除它
- 为什么我的onclick不删除我的任何类
- jQuery自定义菜单-添加和删除类onClick
- 从动态元素中删除onClick
- 从我的图像中删除onclick