摘要:它的用途主要是在使用時候,它作為一個臨時容器。當我們把現(xiàn)有的上的一個節(jié)點插入給,這個節(jié)點會從原上被刪掉。第一點和第二點主要是講利用來進行操作在安全性和性能方面的優(yōu)點。第三點也是它作為臨時容器的一個優(yōu)點,用完之后呢,會自己清空自己,不占內(nèi)存。
在之前的文章JavaScript DOM 1里里面曾解釋過各種概念之前的關(guān)系,當時用了一張圖,如下圖:
從這張圖里面,我們可以看到 DocumentFragment 和 Document 是兄弟關(guān)系,都直接繼承自Node類。
DocumentFragment是一種十分特殊的Node,它和Document一樣沒有parentNode. 它可以有后代節(jié)點,也可以使用appendChild()這類的方法。它的用途主要是在使用appendChild(), insertBefore(), replaceChild()時候,它作為一個臨時容器。
先來看一下怎么創(chuàng)建一個DocumentFragment:
1: document.createDocumentFragment()
var df = document.createDocumentFragment();
雖然DocumentFragment在級別上和Document處于同一層,但是創(chuàng)建的時候,還是在document上調(diào)用方法。
那我們現(xiàn)在來看一看它的特殊之處:
1: DocumentFragment它并不屬于DOM結(jié)構(gòu)的一部分,所以任何對DocumentFragment的操作,不會影響到DOM 2: 當我們給appendChild(), insertBefore(), replaceChild()等傳入一個DocumentFragment的時候,是把DocumentFragment的所有子節(jié)點一次性地插入,而不是DocumentFragment本身 3: 當我們把DocumentFragment插入到別的節(jié)點之后,DocumentFragment的子節(jié)點會自動被清空。 4: 當我們把現(xiàn)有的DOM上的一個節(jié)點插入給DocumentFragment,這個節(jié)點會從原DOM上被刪掉。
第一點和第二點主要是講利用DocumentFragment來進行DOM操作在安全性和性能方面的優(yōu)點。第三點也是它作為臨時容器的一個優(yōu)點,用完之后呢,會自己清空自己,不占內(nèi)存。特別要注意的是第四點,還挺出乎我意料的,我就第四點來做一個實驗:
還是我們的老朋友HTML:
我們創(chuàng)建一個DocumentFragment,然后把第一個"
var bookList = document.getElementsByClassName("bookList")[0]; var firstLi = bookList.firstElementChild; var df = document.createDocumentFragment(); df.appendChild(firstLi);
在執(zhí)行了上面的代碼之后,原來的HTML就變成了:
可以看到,我們把第一個"
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/83641.html
摘要:前言本篇文章以介紹常見的節(jié)點知識元素操作方法為目的,其中也對一些比較容易忽略的問題進行簡要說明。此外,還有一些方式可以獲得相關(guān)的元素節(jié)點。利用字符串拼接使用字符串拼接的方法插入元素是效率最高的。 前言 本篇文章以介紹常見的DOM節(jié)點知識、DOM元素操作方法為目的,其中也對一些比較容易忽略的問題進行簡要說明。才疏學淺,如有紕漏之處或建議歡迎留下評論。 Node節(jié)點 首先,簡單看看Node...
摘要:優(yōu)化策略跟上面的大同小異,就是用局部變量緩存集合以及集合的長度,我就不進行實際測試了。例如錯誤的做法使用修改來進行優(yōu)化如果需要動態(tài)修改,那么就使用批量處理操作并且讓元素脫離文檔流,等操作結(jié)束后再放回文檔流中。 上篇我介紹了Javascript標識符查找方面的優(yōu)化,可以看出在這方面的優(yōu)化給性能帶來的提升并不明顯,甚至可以說基本沒有影響。但是,我今天要分享的是前端Javascript優(yōu)化的...
摘要:將返回匹配到的第一個元素,如果沒有匹配的元素則返回。這是原生方法,比起速度快,缺點是不支持。推薦文章更快捷的操作的途徑代碼持續(xù)更新中 querySelector:選擇相應的元素標簽具有和jquery類似的寫法用法: document.querySelector(div.test>p:first-child); document.querySelector(#test); (返回指定元素...
摘要:插件性能優(yōu)化及個人常用優(yōu)化方法經(jīng)常會觸發(fā)視覺變化。作用域鏈指的是當前作用于下可用變量的集合,它在各種主流瀏覽器中至少包含兩個部分局部變量的集合和全局變量的集合。在考慮優(yōu)化時,數(shù)值和變量的性能差不多,并且速度顯著優(yōu)于對象屬性和數(shù)組元素。 JavaScript 插件性能優(yōu)化及個人react常用優(yōu)化方法 JavaScript 經(jīng)常會觸發(fā)視覺變化。有時是直接通過樣式操作,有時是會產(chǎn)生視覺變化...
閱讀 1416·2021-10-08 10:05
閱讀 3060·2021-09-26 10:10
閱讀 883·2019-08-30 15:55
閱讀 504·2019-08-26 11:51
閱讀 441·2019-08-23 18:10
閱讀 3849·2019-08-23 15:39
閱讀 658·2019-08-23 14:50
閱讀 767·2019-08-23 14:46