Выбор D3JS выберитеВсе

1

У меня есть этот код:

var series, seriesChildren;

selection.each(function (data) {
    series = d3.select(this).selectAll('.my-series').data([data]);
    series.enter().append('g').classed('my-series', true);

    console.log(data);
    seriesChildren = series.selectAll('.seriesChild')
            .data(data, function (d) {
                return d.x;
            });

    seriesChildren.enter()
            .append('g')
            .classed('seriesChild', true);
}

И я не понимаю, почему это дает мне следующее:

<g class="my-series"></g>

без детей.

Так должно быть:

<g class="my-series">
  <g class="seriesChild"></g>
  <g class="seriesChild"></g>
  ...
</g>

Я сделал console.log(data) и мои данные хороши, в нем есть тысячи элементов.

Он работает, выполняя seriesChildren = d3.selectAll('.my-series').selectAll('.seriesChild') но не работает с seriesChildren = series.selectAll('.seriesChild')

Я использую D3JS v4.

  • 0
    Метод данных для вложенного выбора, кажется, не подходит. Вы должны разделить структуру вашего массива данных (не все, только несколько элементов).
Теги:
d3.js

1 ответ

1
Лучший ответ

Эти два утверждения отличаются 1. seriesChildren = series.selectAll('.seriesChild')

2. seriesChildren = d3.selectAll('.my-series').selectAll('.seriesChild')

В первой серии нет элемента DOM, поэтому seriesChildren = d3.selectAll('.my-series').selectAll('.seriesChild') не будет работать так, как вы ожидаете

тогда как во втором случае d3.selectAll('.my-series') это представляет собой элемент DOM и продолжит d3.selectAll('.myseries').selectAll('.seriesChild') выберет другой элемент DOM.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню