它看起来有点混乱,但这是从其父元素中删除元素的标准方法。DOM 元素本身可以独立存在,没有 a ,因此该方法在父级上是parentNode
有意义的。removeChild
IMO 对 DOM 节点本身的通用.remove()
方法可能会产生误导,毕竟,我们并没有从存在中删除元素,只是从其父元素中删除。
不过,您始终可以为此功能创建自己的包装器。例如
function removeElement(element) {
element && element.parentNode && element.parentNode.removeChild(element);
}
// Usage:
removeElement( document.getElementById('some_element') );
或者,使用像jQuery这样的 DOM 库,它为您提供了一堆包装器,例如在 jQuery 中:
$('#some_element').remove();
此编辑是对您的评论的回应,您在评论中询问了扩展本机 DOM 实现的可能性。这被认为是一种不好的做法,因此我们要做的是创建自己的包装器来包含元素,然后创建我们想要的任何方法。例如
function CoolElement(element) {
this.element = element;
}
CoolElement.prototype = {
redify: function() {
this.element.style.color = 'red';
},
remove: function() {
if (this.element.parentNode) {
this.element.parentNode.removeChild(this.element);
}
}
};
// Usage:
var myElement = new CoolElement( document.getElementById('some_element') );
myElement.redify();
myElement.remove();
本质上,这就是 jQuery 所做的,尽管它更高级一些,因为它包装了 DOM 节点的集合,而不仅仅是像上面那样的单个元素。