如何使用d3分类选择将名称作为函数

Pri*_*ani 16 javascript d3.js

我正在使用d3分类选择和第一个参数,而不是String我想使用一个将返回类名的函数.

selection.classed(name[, value])
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用这里提到的attr做同样的事情,但我希望能够使用分类来做同样的事情.我怎样才能做到这一点?

Lar*_*off 32

你在那里提供的班级名称需要修复,即你不能拥有类似的东西function(d) { return d; }.如果您需要由数据确定类名,则需要使用.attr("class", ...).

如果您担心覆盖现有的类名,请注意您可以按如下方式检索和添加这些名称.

.attr("class", function(d) { return d3.select(this).attr("class") + " " + d; })
Run Code Online (Sandbox Code Playgroud)

  • 为了记录,这是一个相关的拉动请求,使用分类来实现它,以及它被拒绝的原因 - https://github.com/mbostock/d3/pull/1072 (7认同)

bm1*_*729 5

我遇到了一个类似的问题,如果我的数据上的属性为真,我想添加一个类,如果该属性为假,我想添加一个不同的类:

selection.classed('class-one', function(d) { return d.property; })
    .classed('class-two', function(d) { return d.property; });
Run Code Online (Sandbox Code Playgroud)

如果您要添加少量的类,那么类似的事情可能值得考虑。