必须在html()或innerHTML之前调用empty()
Is necessary to call empty() before html() or before innerHTML?
我有一个弹出式插件,它设置了一个<div/>
的html内容与AJAX调用的响应。
每次我打开弹出窗口,在代码中我只是调用$("#popup").html(response)
。这将用新内容覆盖现有的html内容。
我应该调用$("popup").empty()
之前,我调用$("popup").html(response)
,所以我释放浏览器内存使用的对象,以前在$("popup")
div?(最终防止内存泄漏)
$("popup")[0].innerHTML = response
呢?我应该调用.empty()
方法吗? 简短回答否
jQuery.fn.html
在做了其他一些事情之后使用DOMNode.innerHTML =
。一种是删除节点上存储的所有数据(通过$.fn.data
存储),参见http://james.padolsey.com/jquery/#v=git&fn=jQuery.fn.html获得完整的源代码概述。
.innerHTML
删除子元素并用新的html代替。但是要小心内存泄漏。我会在设置innerHTML之前使用jQuery.fn.empty
。如:
var a = document.createElement('div'),
b = document.createElement('div');
b.appendChild(a);
b.innerHTML = 'new innerHMTL'.
你会认为一切都好。但是替换/删除的节点仍然在变量a
中被捕获,因此不会被扔给垃圾收集器。我不确定是否jQuery存储DOMNodes内部直到你调用jQuery.removeData
等
JQuery文档中的html方法说:
当使用.html()来设置元素的内容时,该元素中的任何内容都将被新内容完全替换。此外,在用新内容替换子元素之前,jQuery会从子元素中删除其他结构,如数据和事件处理程序。
所以你不需要调用empty()
无需调用empty()
。html
(response
)方法ovverides
现有内容
除了。empty()运行速度更快和。html()可以覆盖上下文内容之外,没有什么区别
http://jsperf.com/jquery-empty-vs-html/17- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 如何从Java/scala调用js美化程序
- 如何调用这个匿名 JavaScript 函数
- 如何从模块链中调用函数.导出到节点中
- 我需要从php调用javascript或jquery
- Chrome开发工具(如何知道我在调用哪个javascript对象)
- 单击按钮后如何逐个调用分区,上一个分区将隐藏
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- Twitter Bootstrap typeahead:使用“this”获取上下文/调用元素
- node.js:setInterval()正在跳过调用
- 如何在单击复选框后调用控制器方法
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 使用Google Visualization动态调用构造函数
- 如何在webView,Android中从@JavascriptInterface方法调用Javascript
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 调用函数内部的函数
- 函数未在Object.keys或Object.getOwnPropertyNames下列出,但可以调用
- 为什么木偶ItemView.在之前的渲染步骤之后打开调用$el.empty()
- 必须在html()或innerHTML之前调用empty()