2016-11-16 6 views
0

this questionのおかげで、私はこれを行う方法を学んだと思うが、私はあなたが好きなように醜いので、私はそれが正しいと信じることはできません。d3既存の他の要素の前に新しいSVG要素を挿入する方法は?

要素が#fooで、SVG要素の前に作成したいとします。

var svg = d3.select(d3.select('#foo').node().parentNode) 
    .insert('svg', '#foo') 

私には何か不足していますか? (編集:明確にするために、上記のサンプルコードは、作業を行いますが、それはかなり不透明だとセレクタの繰り返しが含まれています。)

答えて

0

あなただけtypeselectorが必要になります。例えば

selection.insert(type, before) 

、中このデモでは、円はID fooの要素です。したがって、

var svg2 = svg.insert("svg", "#foo"); 

円要素の前に子SVGを挿入します。あなたの詳細な応答のための

var svg = d3.select("body").append("svg") 
 
var circle = svg.append("circle").attr("id", "foo"); 
 
var svg2 = svg.insert("svg", "#foo"); 
 
svg2.attr("id", "childSVG"); 
 

 
var mySVG = (new XMLSerializer()).serializeToString(svg.node()); 
 
console.log(mySVG)
<script src="https://d3js.org/d3.v4.min.js"></script>

+0

感謝。しかし、私はそれが私の質問に答えるか分からない - あなたは何かを挿入したい親である選択肢の前提から始めている。私の質問は、DOM内の他の既知の要素の前にSVG要素を最初に作成することです。 – artfulrobot

関連する問題