The DocumentFragment
interface represents a minimal document object that has no parent. It is used as a lightweight version of Document
that stores a segment of a document structure comprised of nodes just like a standard document. The key difference is that because the document fragment isn't part of the active document tree structure, changes made to the fragment don't affect the document, cause reflow, or incur any performance impact that can occur when changes are made.
A common use for DocumentFragment
is to create one, assemble a DOM subtree within it, then append or insert the fragment into the DOM using Node
interface methods such as appendChild()
or insertBefore()
. Doing this moves the fragment's nodes into the DOM, leaving behind an empty DocumentFragment
. Because all of the nodes are inserted into the document at once, only one reflow and render is triggered instead of potentially one for each node inserted if they were inserted separately.
This interface is also of great use with Web components: <template>
elements contain a DocumentFragment
in their HTMLTemplateElement.content
property.
An empty DocumentFragment
can be created using the document.createDocumentFragment()
method or the constructor.
This interface has no specific properties, but inherits those of its parent, Node
, and implements those of the ParentNode
interface.
ParentNode.children
Read only
HTMLCollection
containing all objects of type Element
that are children of the DocumentFragment
object.ParentNode.firstElementChild
Read only
Element
that is the first child of the DocumentFragment
object, or null
if there is none.ParentNode.lastElementChild
Read only
Element
that is the last child of the DocumentFragment
object, or null
if there is none.ParentNode.childElementCount
Read only
unsigned long
giving the amount of children that the DocumentFragment
has.DocumentFragment()
DocumentFragment
object.This interface inherits the methods of its parent, Node
, and implements those of the ParentNode
interface.
DocumentFragment.querySelector()
Element
node within the DocumentFragment
, in document order, that matches the specified selectors.DocumentFragment.querySelectorAll()
NodeList
of all the Element
nodes within the DocumentFragment
that match the specified selectors.DocumentFragment.getElementById()
Element
node within the DocumentFragment
, in document order, that matches the specified ID.Specification | Status | Comment |
---|---|---|
DOM The definition of 'DocumentFragment' in that specification. | Living Standard | Added the constructor and the implementation of ParentNode . |
Selectors API Level 1 The definition of 'DocumentFragment' in that specification. | Obsolete | Added the querySelector() and querySelectorAll() methods. |
Document Object Model (DOM) Level 3 Core Specification The definition of 'DocumentFragment' in that specification. | Obsolete | No change from Document Object Model (DOM) Level 2 Core Specification |
Document Object Model (DOM) Level 2 Core Specification The definition of 'DocumentFragment' in that specification. | Obsolete | No change from Document Object Model (DOM) Level 1 Specification |
Document Object Model (DOM) Level 1 Specification The definition of 'DocumentFragment' in that specification. | Obsolete | Initial definition |
Desktop | ||||||
---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | |
Basic support | 1 | Yes | 1 | Yes | Yes | Yes |
DocumentFragment() constructor
|
28 | No | 24 | No | 15 | No |
querySelector |
1 | Yes | 3.5 | 8 | 10 | 3.2 |
querySelectorAll |
1 | Yes | 3.5 | 8 | 10 | 3.2 |
ParentNode properties
|
28 | No | 25 | No | 15 | No |
ParentNode methods
|
No | No | No | No | No | No |
Mobile | |||||||
---|---|---|---|---|---|---|---|
Android webview | Chrome for Android | Edge Mobile | Firefox for Android | Opera for Android | iOS Safari | Samsung Internet | |
Basic support | Yes | Yes | Yes | 4 | Yes | Yes | Yes |
DocumentFragment() constructor
|
Yes | Yes | Yes | 24 | Yes | ? | Yes |
querySelector |
Yes | Yes | Yes | 4 | 10 | 3.2 | Yes |
querySelectorAll |
Yes | Yes | Yes | 4 | 10 | 3.2 | Yes |
ParentNode properties
|
Yes | Yes | No | 25 | 5 | No | Yes |
ParentNode methods
|
No | ? | No | No | No | No | No |
© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment