The DocumentFragment interface represents a minimal document object that has no parent. It is used as a light-weight version of Document to store 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 actual DOM's 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.
<div id="interfaceDiagram" style="display: inline-block; position: relative; width: 100%; padding-bottom: 11.666666666666666%; vertical-align: middle; overflow: hidden;"><svg style="display: inline-block; position: absolute; top: 0; left: 0;" viewbox="-50 0 600 70" preserveAspectRatio="xMinYMin meet"><a xlink:href="https://developer.mozilla.org/en-US/docs/Web/API/EventTarget" target="_top"><rect x="1" y="1" width="110" height="50" fill="#fff" stroke="#D4DDE4" stroke-width="2px" /><text x="56" y="30" font-size="12px" font-family="Consolas,Monaco,Andale Mono,monospace" fill="#4D4E53" text-anchor="middle" alignment-baseline="middle">EventTarget</text></a><polyline points="111,25 121,20 121,30 111,25" stroke="#D4DDE4" fill="none"/><line x1="121" y1="25" x2="151" y2="25" stroke="#D4DDE4"/><a xlink:href="https://developer.mozilla.org/en-US/docs/Web/API/Node" target="_top"><rect x="151" y="1" width="75" height="50" fill="#fff" stroke="#D4DDE4" stroke-width="2px" /><text x="188.5" y="30" font-size="12px" font-family="Consolas,Monaco,Andale Mono,monospace" fill="#4D4E53" text-anchor="middle" alignment-baseline="middle">Node</text></a><polyline points="226,25 236,20 236,30 226,25" stroke="#D4DDE4" fill="none"/><line x1="236" y1="25" x2="266" y2="25" stroke="#D4DDE4"/><a xlink:href="https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment" target="_top"><rect x="266" y="1" width="160" height="50" fill="#F4F7F8" stroke="#D4DDE4" stroke-width="2px" /><text x="346" y="30" font-size="12px" font-family="Consolas,Monaco,Andale Mono,monospace" fill="#4D4E53" text-anchor="middle" alignment-baseline="middle">DocumentFragment</text></a></svg></div>
a:hover text { fill: #0095DD; pointer-events: all;}
Properties
This interface has no specific properties, but inherits those of its parent, Node, and implements those of the ParentNode interface.
ParentNode.childrenRead only- Returns a live
HTMLCollectioncontaining all objects of typeElementthat are children of theDocumentFragmentobject. ParentNode.firstElementChildRead only- Returns the
Elementthat is the first child of theDocumentFragmentobject, ornullif there is none. ParentNode.lastElementChildRead only- Returns the
Elementthat is the last child of theDocumentFragmentobject, ornullif there is none. ParentNode.childElementCountRead only- Returns an
unsigned longgiving the amount of children that theDocumentFragmenthas.
Constructor
DocumentFragment()- Returns an empty
DocumentFragmentobject.
Methods
This interface inherits the methods of its parent, Node, and implements those of the ParentNode interface.
DocumentFragment.find()- Returns the first matching
Elementin the tree of theDocumentFragment. DocumentFragment.findAll()- Returns a
NodeListof matchingElementin the tree of theDocumentFragment. DocumentFragment.querySelector()- Returns the first
Elementnode within theDocumentFragment, in document order, that matches the specified selectors. DocumentFragment.querySelectorAll()- Returns a
NodeListof all theElementnodes within theDocumentFragmentthat match the specified selectors.
DocumentFragment.getElementById()- Returns the first
Elementnode within theDocumentFragment, in document order, that matches the specified ID.
Specifications
| Specification | Status | Comment |
|---|---|---|
| DOM The definition of 'DocumentFragment' in that specification. |
Living Standard | Added the constructor and the implementation of ParentNode. |
| Selectors API Level 2 The definition of 'DocumentFragment' in that specification. |
Working Draft | Added the find() and findAll() methods. |
| Selectors API Level 1 The definition of 'DocumentFragment' in that specification. |
Recommendation | Added the querySelector() and querySelectorAll() methods. |
| Document Object Model (DOM) Level 3 Core Specification The definition of 'DocumentFragment' in that specification. |
Recommendation | 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. |
Recommendation | No change from Document Object Model (DOM) Level 1 Specification |
| Document Object Model (DOM) Level 1 Specification The definition of 'DocumentFragment' in that specification. |
Recommendation | Initial definition |
Browser compatibility
| Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|---|
| Basic support | 1.0 | (Yes) | 1.0 (1.7 or earlier) | (Yes) | (Yes) | (Yes) |
querySelector() and querySelectorAll() |
1.0 | (Yes) | 3.5 (1.9.1) | 8.0 | 10.0 | 3.2 (525.3) |
findAll() and find() |
No support | No support | No support | No support | No support | No support |
DocumentFragment() constructor |
28.0 | (Yes) | 24.0 (24.0) | No support | 15.0 | No support |
ParentNode properties |
28.0 | No support | 25.0 (25.0) | No support | 15.0 | No support |
ParentNode methods |
No support | No support | No support | No support | No support | No support |
| Feature | Android | Edge | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| Basic support | (Yes) | (Yes) | 1.0 (1.0) | (Yes) | (Yes) | (Yes) |
querySelector() and querySelectorAll() |
2.1 | (Yes) | 1.0 (1.0) | 8.0 | 10.0 | 3.2 (525.3) |
findAll() and find() |
No support | No support | No support | No support | No support | No support |
DocumentFragment() constructor |
? | (Yes) | 24.0 (24.0) | No support | ? | ? |
ParentNode properties |
(Yes) | No support | 25.0 (25.0) | No support | 5.0 | No support |
ParentNode methods |
No support | No support | No support | No support | No support | No support |