JQuery可以直接使用$el.append()给元素添加字符串类型的dom,但是最近改用Vue又用jQuery显然不合适,所以通过查资料,封装了一个可以实现的方法效果一样。
显示代码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>
script
let app = document.getElementById('app');
let child = `<div class="child">down</div>`;
app.appendHTML(child);
效果
PS
另外,如果你想在顶部插入,
只需将代码中的this.appendChild(fragment);
更改为this.insertBefore(fragment, this.firstChild);
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。