返回Selected的D3键
Return D3 key of Selected
我知道我可以使用d3.keys()
返回对象内部的所有键,但我想返回鼠标悬停事件内部的选定项键。
我瞄准了D3中的元素,比如:
var test = something.selectAll('rect')
.data(myData['groupSelection'])
.enter()
.append('rect')
.on('mouseover', function (d) {
console.log(d3.keys(d));
}
这将返回给定的选择键,但是,当我真的需要对这些项键进行计数时,例如,如果我选择了从数据中创建的第二个rect,它返回2会很好。
D3中所有将数据作为参数的回调也将数据的索引作为参数。也就是说,代替
.attr("foo", function(d) { ... });
你也可以写
.attr("foo", function(d, i) { ... });
其中d
是数据,i
是传递给.data()
的数据数组中d
的索引。.style()
、.on()
等也是如此。
例如,假设您有数据[2,3]
以及绑定了数据1
和2
的元素。现在,如果你这样做了(注意.data()
的关键功能,根据元素的内容匹配元素)
var sel = d3.selectAll("element").data([2,3], function(d) { return d; });
您将获得非空的enter(包含3)、update(包含2)和exit(包含1绑定到的元素)选择。您可以对每个选项进行操作,例如
sel.attr("foo", function(d, i) { ... });
i
是指选择中的索引。每个选择只包含一个元素,因此i
的值为0——对于每个选择。也就是说,代码
sel.attr("foo", function(d, i) { console.log(i); });
sel.enter().attr("foo", function(d, i) { console.log(i); });
sel.exit().attr("foo", function(d, i) { console.log(i); });
将0登录到控制台三次。例如,如果更新选择的长度为3(也就是说,.data()
的参数中的三个元素与选择中的DOM元素匹配),则在控制台上会得到0、1、2。
相关文章:
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 为什么在单独的函数中应用时转换会闪烁/断断续续(D3)
- 如何在d3.js中返回路径的y坐标
- d3基于用户选择动态更新节点
- 有条件更新d3.js力图中节点的最佳方法
- 为什么我的d3.jsselectAll+过滤器没有过滤
- 使用D3.js计算带有字母间距的文本长度
- d3中堆栈函数和嵌套函数之间的差异
- D3.js模式不适用于弧形或圆环图
- d3.js Chord图的动态工具提示
- 在D3.js中,有没有任何方法可以将x和y方向上的滚动事件绑定到平移svg
- D3嵌套组作为x轴
- d3.hexbin插件-动态定义颜色域以适应数据
- HTML5FileReader输出到D3.js图表
- 如何在d3上的图形中添加放大和缩小按钮
- 在对象数组中查找多个值的d3范围
- d3中的条件转换
- D3.js生成有效的SVG,但不显示任何内容
- 如何查看使用 d.selected 选择了哪些节点?D3/JS.
- 返回Selected的D3键