ОК, вам в принципе не нужно знать родительский элемент для удаления элемента DOM из DOM, посмотрите код ниже, посмотрите, как порядок удаления элемента узла в JavaScript:
Element
+ parentNode
+ removeChild(Element);
Как вы видите, мы сначала находим элемент, затем используем .parentNode, а затем снова удаляем дочерний элемент, который является элементом, поэтому нам вообще не нужно знать родителя!
Итак, посмотрите настоящий код:
var navigation = document.getElementById('navigation');
if(navigation) {
navigation.parentNode.removeChild(navigation);
}
или как функция
function removeNode(element) {
if(element) { //check if it's not null
element.parentNode.removeChild(element);
}
} //call it like : removeNode(document.getElementById('navigation'));
Также в jQuery есть функция remove (), которая широко используется, например:
$('#navigation').remove();
Также есть нативный ChildNode.remove()
, которого нет в IE и старых браузерах, но вы можете его заполнить, посмотрите предложенный полифайл из MDN:
Polyfill
Вы можете заполнить метод remove () в Internet Explorer 9 и выше.
со следующим кодом:
//from:https://github.com/jserz/js_piece/blob/master/DOM/ChildNode/remove()/remove().md
(function (arr) {
arr.forEach(function (item) {
if (item.hasOwnProperty('remove')) {
return;
}
Object.defineProperty(item, 'remove', {
configurable: true,
enumerable: true,
writable: true,
value: function remove() {
this.parentNode.removeChild(this);
}
});
});
})([Element.prototype, CharacterData.prototype, DocumentType.prototype]);
Если вы хотите узнать больше об этом, перейдите по этой ссылке в MDN.