Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何通过连接的数据找到d3.js绘图元素?_Javascript_Svg_D3.js - Fatal编程技术网

Javascript 如何通过连接的数据找到d3.js绘图元素?

Javascript 如何通过连接的数据找到d3.js绘图元素?,javascript,svg,d3.js,Javascript,Svg,D3.js,我有一个d3.js绘图,它由一系列对象组成,例如: svg.selectAll(".circ").data(dataArr) // dataArr is my array of objects .enter().append("circle") .attr("cy", function (d) { return d.y }) .attr("cx", function (d) { return d.x }) .attr

我有一个d3.js绘图,它由一系列对象组成,例如:

svg.selectAll(".circ").data(dataArr) // dataArr is my array of objects
    .enter().append("circle")
    .attr("cy", function (d) {
        return d.y
    })
    .attr("cx", function (d) {
        return d.x
    })
    .attr("r", elemSize / 2)
    .on("dblclick", function (d, i) {
        itemWasClicked(d,i); // function to handle double click
    }
在提到的
itemWasClicked(d,i)
例程中(其中
d
是被单击元素的数据,
i
是它在数组中的索引
dataArr
),我需要找到被单击的实际SVG元素并更改其颜色


如何通过附加的数据找到d3.js元素?除非必要,否则我不想使用附加/按ID元素搜索。我只会在速度更快或者没有其他方法的情况下这样做。

在事件处理程序
中,这是对actioned元素的直接引用

见:

指定的侦听器的调用方式与其他运算符相同 传递当前数据
d
和索引
i
的函数
将此
上下文作为当前DOM元素

因此,您可以简单地:

.on("dblclick", function (d, i) {
    changeColorOf(this);
}

您是否尝试过在click事件处理程序中使用此