ChildNode.after()
method inserts a set of
节点
or
DOMString
objects in the children list of this
ChildNode
's parent, just after this
ChildNode
.
DOMString
objects are inserted as equivalent
文本
节点。
[Throws, Unscopable] void ChildNode.after((Node or DOMString)... nodes);
HierarchyRequestError
: Node cannot be inserted at the specified point in the hierarchy.
var parent = document.createElement("div");
var child = document.createElement("p");
parent.appendChild(child);
var span = document.createElement("span");
child.after(span);
console.log(parent.outerHTML);
// "<div><p></p><span></span></div>"
var parent = document.createElement("div");
var child = document.createElement("p");
parent.appendChild(child);
child.after("Text");
console.log(parent.outerHTML);
// "<div><p></p>Text</div>"
var parent = document.createElement("div");
var child = document.createElement("p");
parent.appendChild(child);
var span = document.createElement("span");
child.after(span, "Text");
console.log(parent.outerHTML);
// "<div><p></p><span></span>Text</div>"
ChildNode.after()
is unscopable
after()
method is not scoped into the
with
statement. See
Symbol.unscopables
了解更多信息。
with(node) {
after("foo");
}
// ReferenceError: after is not defined
You can polyfill the
after()
method in Internet Explorer 9 and higher with the following code:
// from: https://github.com/jserz/js_piece/blob/master/DOM/ChildNode/after()/after().md
(function (arr) {
arr.forEach(function (item) {
if (item.hasOwnProperty('after')) {
return;
}
Object.defineProperty(item, 'after', {
configurable: true,
enumerable: true,
writable: true,
value: function after() {
var argArr = Array.prototype.slice.call(arguments),
docFrag = document.createDocumentFragment();
argArr.forEach(function (argItem) {
var isNode = argItem instanceof Node;
docFrag.appendChild(isNode ? argItem : document.createTextNode(String(argItem)));
});
this.parentNode.insertBefore(docFrag, this.nextSibling);
}
});
});
})([Element.prototype, CharacterData.prototype, DocumentType.prototype]);
// from: https://github.com/FabioVergani/js-Polyfill_Element.prototype.after/blob/master/after.js
(function(x){
var o=x.prototype,p='after';
if(!o[p]){
o[p]=function(){
var e, m=arguments, l=m.length, i=0, t=this, p=t.parentNode, n=Node, s=String, d=document;
if(p!==null){
while(i<l){
e=m[i];
if(e instanceof n){
t=t.nextSibling;
if(t!==null){
p.insertBefore(e,t);
}else{
p.appendChild(e);
};
}else{
p.appendChild(d.createTextNode(s(e)));
};
++i;
};
};
};
};
})(Element);
/*
minified:
(function(x){
var o=x.prototype;
o.after||(o.after=function(){var e,m=arguments,l=m.length,i=0,t=this,p=t.parentNode,n=Node,s=String,d=document;if(p!==null){while(i<l){((e=m[i]) instanceof n)?(((t=t.nextSibling )!==null)?p.insertBefore(e,t):p.appendChild(e)):p.appendChild(d.createTextNode(s(e)));++i;}}});
}(Element));
*/
| 规范 | 状态 | 注释 |
|---|---|---|
|
DOM
The definition of 'ChildNode.after()' in that specification. |
实时标准 | 初始定义。 |
| 桌面 | 移动 | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
after
|
Chrome 54 | Edge 17 | Firefox 49 | IE No | Opera 39 | Safari 10 | WebView Android 54 | Chrome Android 54 | Firefox Android 49 | Opera Android 41 | Safari iOS 10 | Samsung Internet Android 6.0 |
完整支持
不支持
实验。期望将来行为有所改变。
ChildNode
and
ParentNode
ChildNode.before()
ParentNode.append()
Node.appendChild()
Element.insertAdjacentElement()
NodeList
ChildNode
after()
before()
remove()
replaceWith()
AbortController
AbortSignal
AbstractRange
Attr
ByteString
CDATASection
CSSPrimitiveValue
CSSValue
CSSValueList
CharacterData
注释
CustomEvent
DOMConfiguration
DOMError
DOMErrorHandler
DOMException
DOMImplementation
DOMImplementationList
DOMImplementationRegistry
DOMImplementationSource
DOMLocator
DOMObject
DOMParser
DOMPoint
DOMPointInit
DOMPointReadOnly
DOMRect
DOMString
DOMTimeStamp
DOMTokenList
DOMUserData
Document
DocumentFragment
DocumentType
元素
ElementTraversal
Entity
EntityReference
事件
EventTarget
HTMLCollection
MutationObserver
节点
NodeFilter
NodeIterator
NodeList
NonDocumentTypeChildNode
ProcessingInstruction
PromiseResolver
范围
StaticRange
文本
TextDecoder
TextEncoder
TimeRanges
TreeWalker
TypeInfo
USVString
UserDataHandler
XMLDocument