如何从 DOM 中删除兄弟姐妹?

发布于 2024-12-02 05:36:27 字数 139 浏览 1 评论 0原文

我有这个工作代码:

  a.parentNode.removeChild(a);

我还需要删除这个孩子的前一个兄弟姐妹,即它之前的元素。

我该如何更新这个? MDN 有相关文档吗?

I have this working code:

  a.parentNode.removeChild(a);

I need to also remove this child's previous sibling, i.e. the element that comes before it.

How do I update this? Does MDN have documentation on it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

情何以堪。 2024-12-09 05:36:27

好的,这是一个考虑到前一个兄弟节点可能不是元素节点的解决方案:

var previous = a.previousSibling;

// iterate until we find an element node or there is no previous sibling
while(previous && previous.nodeType !== 1) {
    previous = previous.previousSibling;
}

// if there is a sibling, remove it
if(previous) {
    previous.parentNode.removeChild(previous);
}

参考: Node.previousSibling [MDN]

您可以轻松创建一个函数,为您提供前一个元素节点。

我将在这里重复我的评论:

您可以在 MDN 上找到所有 DOM 接口的参考,特别是,Node 接口

Ok, here is a solution which takes into account that the previous sibling might not be an element node:

var previous = a.previousSibling;

// iterate until we find an element node or there is no previous sibling
while(previous && previous.nodeType !== 1) {
    previous = previous.previousSibling;
}

// if there is a sibling, remove it
if(previous) {
    previous.parentNode.removeChild(previous);
}

Reference: Node.previousSibling [MDN]

You could easily create a function which gives you the previous element node.

I will repeat my comment here:

You can find a reference of all DOM interfaces at MDN, in particular, the Node interface.

当梦初醒 2024-12-09 05:36:27
  /**
   * Removes all sibling elements after specified
   * @param {HTMLElement} currentElement
   * @private
   */
  _removeNextSiblings(currentElement) {
    while (!!currentElement.nextElementSibling) {
      currentElement.nextElementSibling.remove();
    }
  }
  /**
   * Removes all sibling elements after specified
   * @param {HTMLElement} currentElement
   * @private
   */
  _removeNextSiblings(currentElement) {
    while (!!currentElement.nextElementSibling) {
      currentElement.nextElementSibling.remove();
    }
  }
魄砕の薆 2024-12-09 05:36:27

以下代码是删除除.me之外的所有同级元素

const node = document.querySelector('.me');
const clone = node.cloneNode(true);

const parentNode = node.parentNode;
parentNode.innerHTML = '';
parentNode.append(clone);

The following code is to remove all sibling elements except for .me

const node = document.querySelector('.me');
const clone = node.cloneNode(true);

const parentNode = node.parentNode;
parentNode.innerHTML = '';
parentNode.append(clone);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文