[JS][jQuery]清空元素html()、innerHTML= 与 empty()的区别 、remove()区别
清空元素html("")、innerHTML="" 與 empty()的區別
?一、清空元素的區別
? ? ?1、錯誤做法一:
? ? ? ? ? ?$("#test").html("");//該做法會導致內存泄露
二、原理:
?
在 jquery 中用 innerHTML 的方法來清空元素,是必然會導致內存泄露的,由于 jquery 對于同一元素多事件處理沒有直接采用瀏覽器事件模型,而是自己緩存事件,遍歷觸發,以及便于 trigger 程序觸發 :
采用 data 方法,將一些數據關聯到了元素上面,上述事件即是采用該機制緩存事件監聽器。
?
那么就可以知道,直接 innerHTML=“” 而不通知 jquery 清空與將要刪除元素關聯的數據,那么這部分數據就再也釋放不了了,即為內存泄露。
?
三、要用到移除指定元素的時候,發現empty()與remove([expr])都可以用來實現。可仔細觀察效果的話就可以發現。empty()是只移除了 指定元素中的所有子節點,拿$("p").empty()來說,他只是把<p>dsfsd</p>中的文本給移除了,而留下 了<p></p>,仍保留其在dom中所占的位置。
remove([expr])則是把其從dom中刪除,而不會保留其所占的位置?!?/p>
例:
<p>Hello</p>
World
<p>welcome</p>
執行$("p").empty()其結果是
<p></p>
World
<p></p>
執行$("p").remove()其結果是
World
?
轉載于:https://www.cnblogs.com/caroline4lc/p/4383275.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的[JS][jQuery]清空元素html()、innerHTML= 与 empty()的区别 、remove()区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 免费的管理页面模板
- 下一篇: 2017年html5行业报告,云适配发布