在 D3 中更改子类的属性

Changing attribute of subclass in D3

我想更改下图中子class的属性。

如何 select 在两种不同的场景中使用特定对象?

1) 创建主class时:

slider = svg.append("g")
        .attr("class", "slider")
        .attr("transform", "translate(" + slider_translate_width + "," + 0 + ")")
        .attr("cursor", "default")
        .call(brush);

2) 当使用 svg.selectall("...")

在第一种情况下,变量 slider 是屏幕截图中显示的 <g class="slider"> 元素。通过调用

简单地 select rect 元素
var rect = slider.select('rect');
rect.attr('width', ...);

/* Or, chaining */
slider.select('rect').attr('width', ...);

您还可以 select 使用 CSS select 或 selectselectAll:

的元素
d3.selectAll('.slider > rect').attr('width', ...);

一般来说,第二种方法 较慢 因为你要遍历整个 DOM 而不是第一种方法,你只遍历的兄弟姐妹<g class="slider">.