Kann ich ein SVG-Element zwischen SVG-Gruppen in d3.js verschieben?

8

Kann ich ein SVG-Element zwischen SVG-Gruppen verschieben, ohne zu viel Rechenleistung hinter die Kulissen zu bringen oder zu viel Code in meinem eigenen Code zu erstellen? Die d3 api-Dokumentation erwähnt, dass Sie entfernte Elemente (?) Nicht erneut anhängen können.

Das Element neu erstellen, nachdem es aus seiner ursprünglichen Gruppe entfernt wurde - scheint in meinem Code umständlich zu sein und für d3 und den Browser teurer zu sein, als wenn es möglich wäre.

Dies ist auch relevant für das Definieren eines Elements, bevor es einer Gruppe zugeordnet wird, nicht nur um es wirklich zwischen Gruppen zu verschieben (d. h. um ein Element von einer Nicht-Gruppe in eine Gruppe zu verschieben).

    
matanster 17.05.2014, 16:57
quelle

2 Antworten

12

Die Dokumente, die Sie gepostet haben , erwähnen auch, dass Sie die Elemente erneut hinzufügen können, indem Sie eine Funktion übergeben .append oder .insert . Hier ist, was es sagt:

  

Beachten Sie, dass es derzeit keine dedizierte API gibt, um entfernte Elemente zum Dokument hinzuzufügen; Sie können jedoch eine Funktion an selection.append oder selection.insert übergeben, um Elemente erneut hinzuzufügen.

Da .remove für eine Auswahl diese Auswahl zurückgibt, könnten Sie das entfernte Element in einer Variablen speichern und dann .append it an die neue Gruppe mit selection.node() , um das DOM-Element aus der entfernten Auswahl zu übernehmen:

%Vor%

Hier ist eine einfache Fiddle , die diese Technik verwendet, um ein Kreiselement von einer Gruppe in eine andere zu verschieben ein Click-Handler.

    
jshanley 18.05.2014 16:40
quelle
1

Das ist in D3 nicht möglich, aber JQuery hat dafür die Funktion .appendTo() , z. B.

%Vor%     
Lars Kotthoff 17.05.2014 17:00
quelle

Tags und Links