Это может показаться немного грязным, но это стандартный способ удаления элемента из его родителя.Сам элемент DOM может существовать сам по себе, без parentNode
, поэтому имеет смысл, что метод removeChild
находится на родительском элементе.
IMO универсальный метод .remove()
на самом узле DOM можетвводить в заблуждение, в конце концов, мы не удаляем элемент из существования, просто из его родителя.
Вы всегда можете создать свои собственные обертки для этой функциональности.Например,
function removeElement(element) {
element && element.parentNode && element.parentNode.removeChild(element);
}
// Usage:
removeElement( document.getElementById('some_element') );
. Или используйте библиотеку DOM, такую как jQuery , которая предоставляет вам множество оберток, например, в jQuery:
$('#some_element').remove();
This edit - ответ на ваш комментарий, в котором вы спрашивали о возможности расширения встроенной реализации 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, а не просто отдельный элемент, как описано выше.