2012-09-01 8 views
14

Mam problem, który próbuje umieścić okrąg i tekst wewnątrz grupy (ten sam poziom, nie w sobie nawzajem) w kontekście .enter()D3j, jak dodać 2 dzieci na tym samym poziomie w kontekście .enter

var categorized = g1.selectAll("g.node").data(dataset, function(d){return d.id}) 

categorized 
.enter() 
    .append("g") 
    .attr("id", function(d,i){return d.id;}); 

categorized 
.enter().append("circle") 
    .style("fill", "#ddd"); 
// throws an error 

categorized 
.append('text') 
    .text(function(d,i){return d.count}); 
// this is working but is an update so I have to remove the text on exit 

Czy istnieje sposób, aby dostać się z powrotem do rodziców, sg tak:

categorized 
.enter() 
.append("g") 
.append("circle") 
.getBackToParent // the g 
.append("text"); 

Odpowiedz

24

Wystarczy przypisać opakowanie rodzic d3 do zmiennej:

var g = categorized.enter().append("g"); 
g.append("circle").style("fill", "#ddd"); 
g.append("text").text(function(d,i){return d.count}); 
+0

Dzięki. Zadziałało. Miałem wcześniej problem z wiązaniem danych i chociaż użycie var z kontekstem enter było częścią problemu, ale tak nie jest. – mikpouet

+0

Jest to bardzo przydatne w 'svg'. Ale co powiesz na 'html', na przykład aby zamieniać naprzemiennie'

'i'
'tagi? –

+0

@leonardvertighel: Nie wiesz, co masz na myśli, możesz zadać nowe pytanie. –

Powiązane problemy