【问题标题】:Express item.parentElement.remove() in a way that is supported by IE以 IE 支持的方式表达 item.parentElement.remove()
【发布时间】:2015-12-20 02:55:00
【问题描述】:

据我了解,

remove()

函数在 IE 中不受支持。我有一个 JS 函数,它创建一个 div 并将其附加到现有列表中。该 div 包含另一个样式为按钮的 div(这是标题中的“项目”,当我从 HTML 中获取它时,这就是我所说的),单击时,它会从 DOM 中删除其 parentNode(以及其自身)(通过 remove()),尽管它仍然“存在”,因为 JavaScript 可以读取它的数据和内容。我需要一种将它从 DOM 以及它的所有子元素中删除的方法。将它的 innerHTML 设置为 none 将不起作用,也不会将其 display 设置为 none。知道如何以与 IE 兼容的方式执行此操作吗?

感谢任何帮助,请不要使用 jQuery 或其他框架。

【问题讨论】:

标签: javascript html internet-explorer javascript-events


【解决方案1】:

任何时候你会使用.remove(),你总是可以只使用.removeChild(),而不是使用稍微不同的代码。

所以,如果你想删除给定节点的父节点:

item.parentElement.remove();

然后,您可以改为这样做:

var p = item.parentNode;
p.parentNode.removeChild(p);

如果你想把它放在一个实用函数中,你可以这样做:

function removeNode(node) {
    node.parentNode.removechild(node);
}

而且,在您的情况下,您可以这样称呼它,而不是 item.parentElement.remove()

removeNode(item.parentNode);

注意,我使用的是parentNode 而不是parentElement,因为您似乎希望 IE 与旧版本的 IE 兼容。 parentNodeparentElement 并不完全相同,但 parentNodeparentElement 不同的情况非常罕见(实际上,我想不出在普通 DOM 中不会出现这种情况的情况适合使用parentNode)。有关差异的讨论,请参阅 Difference between DOM parentNode and parentElement

【讨论】:

  • @Leshy - 这个答案解决了你的问题吗?如果是这样,请通过选中该答案左侧的绿色复选标记来标记为已接受的答案,以向社区表明您的问题已得到解答,然后您和提供答案的人都将获得一些可以领先的声誉积分在 StackOverflow 上获得更多特权。如果您的问题尚未解决,请说明您还有什么困惑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-31
  • 2020-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多