Entfernen Sie ein element aus dem DOM von Referenz zu element nur
Dies ist entweder sehr einfach oder gar unmöglich.
Ich weiß, ich kann dies tun:
var element = document.getElementById('some_element');
element.parentNode.removeChild(element);
...aber es fühlt sich chaotisch. Ist es ein aufgeräumter - und universell - Wege, das gleiche zu tun?
Es scheint - mir zumindest - wie es sollte so etwas wie dieses:
document.getElementById('some_element').remove();
...aber das funktioniert nicht, und Google-Suche/SO hat nicht nachgegeben alternative.
Ich weiß, es spielt keine Rolle, dass viel, aber parentNode.removeChild()
fühlt sich einfach hacky/chaotisch/ineffiziente/schlechte Praxis-y.
InformationsquelleAutor der Frage DaveRandom | 2011-09-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann es scheinen, ein bisschen chaotisch, aber das ist das standard-Verfahren zum entfernen eines Elements aus dem übergeordneten element. Das DOM-element selbst bestehen kann, auf seine eigene, ohne eine
parentNode
so macht es Sinn, dass dieremoveChild
Methode ist auf die Muttergesellschaft.IMO eine generische
.remove()
Methode auf die DOM-Knoten selbst kann irreführend sein, schließlich sind wir nicht entfernen das element aus der Existenz, gerade von seinem Elternteil.Können Sie immer erstellen Sie Ihre eigenen Wrapper für diese Funktionalität ist aber. E. g.
Oder verwenden Sie einen DOM-Bibliothek, wie jQuery bietet eine Reihe von Verpackungen, wie zum Beispiel in jQuery:
Diese Bearbeiten ist, in Antwort auf Ihren Kommentar, in dem Sie erkundigte sich über die Möglichkeit zu verlängern nativen DOM-Implementierung. Dies wird als eine schlechte Praxis, also, was wir stattdessen tun, ist unsere eigene Wrapper enthalten die Elemente und dann schaffen wir, was auch immer Methoden, die wir wollen. E. g.
Dies ist im wesentlichen, was jQuery macht, obwohl es ein wenig mehr erweitert, denn es umschließt Kollektionen von DOM-Knoten, statt nur ein einzelnes element wie oben.
InformationsquelleAutor der Antwort James
Deinem code ist der richtige und beste Weg, es zu tun.
jQuery hat das, was Sie suchen:
InformationsquelleAutor der Antwort SLaks
Dem DOM level 4 specs scheint angenommen haben, die "jQuery-Philosophie" zu tun, diverse DOM-Wechsel-Vorgänge (siehe https://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#interface-element). Entfernen ist einer von Ihnen:
In dieser Zeit, es ist nur unterstützt in späteren Versionen von Chrome, Opera, Firefox, aber es gibt auch shims für die patch diese, wenn Sie möchten, um diese Funktionalität zu verwenden in der Produktion heute:
https://github.com/Raynos/DOM-shim
Ob es vorzuziehen removeChild oder nicht, lasse ich undebated für jetzt.
InformationsquelleAutor der Antwort Daniel