D3.js: Различия между select ("body"). SelectAll ("p") и selectAll ("p")? - PullRequest
12 голосов
/ 13 декабря 2011

Кто-нибудь знает, в чем разница?

Насколько я понимаю, оба возвращают одинаковые выборки.

Однако, когда я делаю добавление, если я использую selectAll ("p") это не работает.

Например, это работает:

var foo = d3.select("body").selectAll("p")
    .data([1,2,3,4])

foo.enter.append("p")

Пока это не работает:

var foo = d3.selectAll("p")
    .data([1,2,3,4])

foo.enter.append("p")

Почему последнее не работаетне работает?

1 Ответ

16 голосов
/ 14 декабря 2011

Краткий ответ здесь: «Потому что нечего добавить». Хотя вы и правы, d3.selectAll("p") и d3.select("body").selectAll("p") выберут те же существующие узлы, выбор элемента body сначала устанавливает контекст для новых узлов, добавленных с .append() метод.

Без выбора body у вас нет смысла вставлять узлы в дереве DOM - я предполагаю, что d3 пытается добавить новые узлы к объекту document, что приводит к HIERARCHY_REQUEST_ERROR обсуждается здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...