javascript - 如何在没有jquery的情况下删除多个元素的包装?

标签 javascript html

我有一组元素,想要在 Javascript 中删除其容器包装。

我已经研究过( thisthisthis ),但我需要一个 1) 不涉及 jQuery 的解决方案。 2) 并且可以处理多个元素。

HTML:

<div class="global-container stacked">
    <article class="global"></article>
    <article class="global"></article>
</div>

我已经尝试过:

var globalArticles = document.getElementsByClassName('global');
globalArticles.outerHTML = globalArticles.innerHTML;

但这行不通。如何从所有 article.global 中删除包装器?

最佳答案

您可以创建自己的 unwrap() 方法,如下所示

function unwrap(elems) {
    elems = 'length' in elems ? elems : [elems];
    for (var i = 0; i < elems.length; i++) {
        var elem        = elems[i];
        var parent      = elem.parentNode;
        var grandparent = parent.parentNode;

        grandparent.insertBefore(elem, parent);

        if (parent.children.length === 0) 
            grandparent.removeChild(parent);
    }
}

var globalArticles = document.getElementsByClassName('global');    

unwrap(globalArticles);

关于javascript - 如何在没有jquery的情况下删除多个元素的包装?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37624455/

相关文章:

javascript - Facebook 如何在帖子文本内容上实现它的 "see more"功能。

php - 显示所有原始信息

javascript - .then 作用域内的变量值与 .then 作用域外的变量值不同

javascript - 如何将值添加到空的 SELECT 中?

html - 数据过滤器无法正确显示手机或平板电脑尺寸的标签

javascript - Disney+ 如何防止对其内容进行屏幕录制?

html - 如何将输入标签中的文本移至更高位置并在到达末尾行时输入?

javascript - 我的 jQuery 代码有什么问题?我的循环不工作

javascript - 从 iframe 内部调用父 Javascript 函数

javascript - 如何 switchmap - 发出包含原始可观察值和新可观察值的对象?