Ich mag die Verwendung von Append in D3 und suche nach Prepend.
Existiert das in D3?
Antworten:
Sie können verwenden
selection.insert(newElement[, anotherExistingElement])
Zum Beispiel:
selection.insert("div",":first-child")
Der obige Code fügt ein div
vor dem ersten untergeordneten Element des ausgewählten Elements ein. Weitere Informationen finden Sie in der Dokumentation .
Eine andere Möglichkeit, Elemente vor einem Knoten einzufügen (einschließlich einfacher Texte):
var parentEl = d3.select("div").node();
parentEl.insertBefore(document.createElement("div"), parentEl.childNodes[0]);
<script src="https://d3js.org/d3.v3.min.js"></script>
<div>
This is a plain text
<a></a>
</div>
Selection.lower ()
selection.lower()
platziert ein Element als erstes Kind seines Elternteils.
Zusammen mit d3 des append , selection.append().lower()
kann jQuery replizieren prepend
Seit D3 v4 + hat D3 beide selection.raise()
und selection.lower()
Methoden. Diese werden am häufigsten verwendet, um Elemente in einem SVG so zu verschieben, dass bestimmte Elemente über anderen erscheinen, wobei die Reihenfolge der SVG-Elemente im DOM die Zeichnungsreihenfolge bestimmt. Sie können jedoch für jedes Element im DOM verwendet werden.
Hier ist eine kurze Demonstration mit Divs und Absätzen:
Das Snippet enthält ein Div mit folgendem Inhalt:
Text
<p> Child Paragraph </p>
Und verwendet d3, um einen neuen Absatz anzuhängen und ihn dann so abzusenken, dass die Struktur wie folgt ist:
<p>Inserted</p>
Text
<p> Child Paragraph </p>
Und zum Vergleich mit jQuerys Prepend:
Mehr Info
Die selection.lower () ist als solche implementiert ( weitere Informationen finden Sie in den Dokumenten ):
selection.each(function() {
this.parentNode.insertBefore(this, this.parentNode.firstChild);
});