2013-12-02 5 views
0

Я использую d3, и я хочу добавить к элементу, который я добавляю.Добавление при использовании selectAll в d3

svg.append('g').attr('foo', 'bar') 
    .selectAll('rect').data(data) 
    .enter().append('rect') 
     .attr('class', function(d) { return 'some-class' }) 
     .attr('y', 0) 
     .attr('height', 42) 
     .attr('x', function(d) { return d.x); }) 
     .attr('width', 9001); 
     // hot damn would it be cool if I could just .append a span here... 

Я хочу добавить промежуток к элементам, которые я вставляю, но я не знаю, как это сделать. Люди говорят, что используют appendTo, но я не знаю, как это работает с selectAll, я пробовал перебирать элементы и добавлять их, но это не работает. Я не уверен, почему.

svg.append('g').attr('foo', 'bar'); 
_.each(data, function(d) { 
    var rect = $('rect') 
     .attr('class', function() { return 'some-class'; }) 
     .attr('y', 0) 
     .attr('height', 42) 
     .attr('x', function() { return d.x; }) 
     .attr('width', 9001) 
     .append('<span class="cool-class">Spantastic!</span>'); 

    svg.append(rect); 
}); 

Я не очень хорошо знаком с такого рода вещи, я сделал несколько изменений гадать, как это должно быть, но ничего не работает (d3 содержит около объекта, не имея какого-либо метода «IndexOf»). Есть идеи? Благодарю.

+1

Вы должны иметь возможность просто добавить '.append (" span ")' в конец вашего первого блока кода. Это добавит элемент 'span' к каждому' rect'. –

+0

@LarsKotthoff спасибо! Я делал это неправильно и пытался найти ответ на google, и он видел, как люди говорили о том, как вы не могли использовать .append .append, потому что исходный объект был возвращен не новым, и я думал, что это моя проблема. – user1756980

+0

Прохладный, я добавлю это в качестве ответа для справки. –

ответ

0

Вы должны иметь возможность просто добавить .append("span") в конец вашего первого блока кода. Это добавит элемент span к каждому rect.