D3.js

2012-11-08 13 views
7

代わりの最もd3.js例は、私が要素を作成したいし、それを添付しないと思いますD3.js

d3.select("body").append("svg") 

を行う際に、「メモリ内」要素を作成します。体や何かにすぐに。

種類がjQueryのような$('<div/>')です。

どうすればいいですか?

+0

が重複する可能性[それを追加することなく、 "SVG" オブジェクトを作成する方法?](http://stackoverflow.com/questions/18455282/how-to-create-svg-object-without-appending-it) –

答えて

13

document.createElement()を使用して要素を作成し、通常通りd3に渡します。コンソールで

var $svg = $('<svg/>'); 
var d3svg = d3.select($svg[0]); 

// ... manipulate d3svg ... 

$('body').append($svg) 

はそれが役に立てば幸い:

> a = document.createElement("div") 
<div>​</div>​ 
> d3.select(a).append("svg") 
[Array[1]] 
> a 
<div>​ 
<svg>​</svg>​ 
</div>​ 
+4

https://github.com/mbostock/d3/issuesで修正して公式にしました。/825 – widged

+0

ありがとう@フォローアップからウィジェット! – minikomi

1

あなたが好きなものを試してみてください。

0

私は私のカスタムSVG要素の割合幅をサポートするためにこれをしなければならなかった:

var svgDom = document.createElementNS("http://www.w3.org/2000/svg", "svg"); 
svgDom.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:xlink", "http://www.w3.org/1999/xlink"); 
svg = d3.select(svgDom) 
    .attr("class", "chart") 
    .attr("width", "100%") 
    .attr("height", "100%"); 
0

document.createElementNSを使用する「メモリ内の」SVG要素を作成します。 document.createElementNSの

用途:

// Create the svg elem 
var svg = document.createElementNS("http://www.w3.org/2000/svg", "svg"); 

// Create a g elem 
var g = document.createElementNS("http://www.w3.org/2000/svg", "g"); 

// Create a d3 Selection with the elem 
var d3Svg = d3.select(svg); 
var d3g = d3.select(g); 

は別のD3選択にD3の選択を追加します。

d3Svg.append(function(){ return d3g.node(); });