原生JS实现jQuery append功能

jQuery中可以直接使用$el.append()为元素添加字符串型dom, 但是最近转战Vue, 再使用jQuery明显不合适了, 所以通过查找资料, 封装一个可以实现同样效果的方法.

Show Me The Code

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);

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。