原生JS实现jQuery的append与insertBefore功能

作者:小圆点

时间:2026-10-25

浏览:379

本文介绍如何使用原生JavaScript模拟jQuery的append功能,通过DocumentFragment和innerHTML解析HTML字符串并插入节点。同时详解insertAdjacentHTML方法的四种位置参数,对比两种实现方式的兼容性与适用场景,帮助开发者在不依赖库的情况下高效完成DOM操作。

文章目录

展示代码示例


HTMLElement.prototype.appendHTML = function(html) {
	let divTemp = document.createElement("div");
	let nodes = null;
	let fragment = document.createDocumentFragment();
	divTemp.innerHTML = html;
	nodes = divTemp.childNodes;
	nodes.forEach(item => {
		fragment.appendChild(item.cloneNode(true));
	})
	// 插入到最后 append
	this.appendChild(fragment);
	// 在最前插入 prepend
	// this.insertBefore(fragment, this.firstChild);
	nodes = null;
	fragment = null;
};

验证执行结果

HTML结构


<style>
.child {
  height: 50px;
  width: 50px;
  background: #66CCFF;
  margin-bottom: 1em;
}
</style>

<div id="app">
  <div class="child">
  <div class="child">
</div>

JavaScript逻辑


let app = document.getElementById('app');
let child = `<div class="child">down</div>`;
app.appendHTML(child);

运行效果

展示代码示例

补充说明

此外,若需实现向上插入操作,仅需将代码中的this.appendChild(fragment);替换为this.insertBefore(fragment, this.firstChild);

其他实现方案


var div2 = document.querySelector("#div2");
  div2.insertAdjacentHTML("beforebegin","<p>hello world</p>");//在调用元素外部前面添加一个元素
  div2.insertAdjacentHTML("afterbegin","<p>hello world</p>");//在调用元素的内部添加一个子元素并取代了第一个子元素
  div2.insertAdjacentHTML("beforeend","<p>hello world</p>");//在调用元素内部后面添加一个子元素 即取代了最后的子元素
  div2.insertAdjacentHTML("afterend","<p>hello world</p>");//在调用元素的外部后面添加一个元素

浏览器渲染呈现:

展示代码示例

该方法是IE浏览器早期采用的方案,因此具备极佳的兼容性

以上是关于JS实现jQuery append功能的完整解析,欲了解更多信息,敬请查阅本站其他相关文章!

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章