我正在尝试使用 D3.js更新stop
SVG 中的元素。linearGradient
你可以在这里看到我的工作小提琴:http: //jsfiddle.net/nrabinowitz/C85R8/
我正在使用标准 D3 模式的数据连接、输入、更新、退出,如下所示:
var stops = d3.select('#myGradient').selectAll('stops')
.data(data);
stops.enter().append('stop');
stops
.attr('offset', function(d) { return d[0]; })
.attr('stop-color', function(d) { return d[1]; });
stops.exit().remove();
这适用于初始创建停靠点。但是,当我尝试更新时,该.selectAll('stops')
函数似乎找不到创建的元素。在小提琴中,当我检查 SVG 时,我在更新后看到两组停止元素(无法更新渐变)。
相比之下,使用文本元素运行几乎完全相同的代码可以完美运行。
为什么代码在更新时不能正确选择现有的停止元素?这是d3.select
Sizzle.js 或 Sizzle.js 中的错误吗?