1. 元素

1.4. 添加元素

selection.append(type


如果指定的 type 为字符串则创建一个以此字符串为标签名的元素,并将其追加到选择集元素列表中。如果选择集为 enter selection 则将其添加到下一个同胞节点之前。后续的 enter 选择集将和新的元素一起被插入到 DOM 中。但是要注意的是当绑定的数据发生顺序变化时仍然需要使用 selection.order 来同步更新元素的次序。(比如新元素与之前绑定的数据元素之间的次序发生变化)

如果 type 为函数则会为每个选中的元素执行,并传递当前绑定的元素 d,当前索引 i 以及当前分组 nodes,函数内部 this 指向当前 DOM 元素(nodes[i]). 函数应该返回一个元素用来被添加到 DOM 中(通常在函数内部创建一个新元素节点返回,但是也可能会返回一个已有的元素)。例如为每个 p 标签中添加一个 div 元素:
d3.selectAll("p").append("div");
等价于:
d3.selectAll("p").append(function() {
return document.createElement("div");
});
等价于:
d3.selectAll("p").select(function() {
return this.appendChild(document.createElement("div"));
});
无论是 type 是字符串还是返回 DOM 元素的函数,都会返回一个新的包含被添加元素的选择集。每个新的元素都会继承当前元素的数据(如果有的话),参考 selection.select。
指定的标签 name 可能包含一个命名空间前缀,比如使用 svg:text 指定 SVG 命名空间下的 text 元素。参考 namespaces 获取支持的命名空间,也可以注册命名空间。如果没有指定命名空间则会继承父元素的命名空间;如果指定的标签名的命名空间是已知的,则对应的命名空间会被使用(比如 svg 暗指 svg:svg).

🔗selection.append() 中文