仅选择使用d3.js更新元素

joh*_*wie 5 d3.js

d3.js join没有办法只从'进入'元素中选择"更新"元素?

updateAndEnter = d3.selectAll('element').data(data);

entering = updateAndEnter.enter();

exiting = updateAndEnter.exit();

updatingOnly = ??;
Run Code Online (Sandbox Code Playgroud)

nau*_*tat 15

是的,数据连接之后的选择包含"仅更新"元素.在附加到enter()选项之后,它将被扩展为包括输入元素.

请参见常规更新模式:

  // DATA JOIN
  // Join new data with old elements, if any.
  var text = svg.selectAll("text")
      .data(data);

  // UPDATE
  // Update old elements as needed.
  text.attr("class", "update");

  // ENTER
  // Create new elements as needed.
  text.enter().append("text")
      .attr("class", "enter")
      .attr("x", function(d, i) { return i * 32; })
      .attr("dy", ".35em");

  // ENTER + UPDATE
  // Appending to the enter selection expands the update selection to include
  // entering elements; so, operations on the update selection after appending to
  // the enter selection will apply to both entering and updating nodes.
  text.text(function(d) { return d; });

  // EXIT
  // Remove old elements as needed.
  text.exit().remove();
Run Code Online (Sandbox Code Playgroud)