【发布时间】:2017-06-17 06:26:27
【问题描述】:
D3 有两种设置类的方法:
selection.attr("class", (d) => d.isFoo ? "foo" : "");
selection.classed("foo", (d) => d.isFoo)
我正在寻找一种方法来添加一个根据数据命名的类。 IE。类似:
selection.classed((d) => "node" + d.id, true);
- 我不想使用
id,因为多个 DOM 元素将共享该类。 - 我不想使用
attr,因为它可能会覆盖已经存在的其他类。
所以我可以这样做
selection.attr("class", (d) => d3.select(this).attr("class") + " node" + d.id);
感觉有点hackish。
有更好的解决方案吗?还是正在开发的功能?
【问题讨论】:
-
selection.attr("class", (d) => d3.select(this).attr("class") + " node" + d.id);与selection.classed((d) => "node" + d.id, true);完全相同 -
@Dummy 不,不一样。如果你这样做
selection.classed((d) => "node" + d.id, true);,它会给你的元素all这个奇怪的类:".(d) => "node" + d.name"。顺便说一句,奇怪且无效。整个函数将被视为一个字符串。试试看,你会看到的。
标签: javascript css d3.js