以编程方式访问单击事件上的 d3 矩形
programmatically access a d3 rectangle on click event
我创建了几个 d3 矩形并给它们每个一个点击事件:
首先我创建了容器:
var svgContainer = d3.select("#Container")
.append("svg")
.attr("width", 720)
.attr("height", 45);
然后在 for 循环中我在容器内创建每个矩形:
var rectangle = svgContainer.append("rect")
.attr("x", 10 + xAppend)
.attr("y", 5)
.attr("width", 120)
.attr("height", 35)
.attr("stroke", "black")
.attr("name", name)
.on("click", function () {
// Click event...
//...
});
现在在不同的功能中,我想触发那个点击功能。变量 'rectangle' 不是全局的,它是在 for 循环中创建的,我从 for 循环中创建了 6 个矩形。
到目前为止我在另一个函数中所做的是:
var tempContainer = d3.select("#Container");
var test = tempContainer.selectAll("rect");
这给了我一个包含 1 个对象的数组,该对象是一个包含 6 个矩形的数组,然后我遍历该数组以找到我想要的矩形。
for (var i = 0; i < test[0].length; i++) {
if (search.item.desc == test[0][i].attributes[5].value)
{
var testing = test[0][i];
//testing.attributes[5].value works fine
//testing.click(); does not work
//testing.on('click')(); does not work
}
}
在 for 循环中,变量 'testing' 是我想要的矩形,我可以像在上面的 if 语句中那样访问它的属性。但是我无法访问和触发点击功能
单击事件函数可以通过以下方式访问:
testing.__onclick();
我创建了几个 d3 矩形并给它们每个一个点击事件: 首先我创建了容器:
var svgContainer = d3.select("#Container")
.append("svg")
.attr("width", 720)
.attr("height", 45);
然后在 for 循环中我在容器内创建每个矩形:
var rectangle = svgContainer.append("rect")
.attr("x", 10 + xAppend)
.attr("y", 5)
.attr("width", 120)
.attr("height", 35)
.attr("stroke", "black")
.attr("name", name)
.on("click", function () {
// Click event...
//...
});
现在在不同的功能中,我想触发那个点击功能。变量 'rectangle' 不是全局的,它是在 for 循环中创建的,我从 for 循环中创建了 6 个矩形。
到目前为止我在另一个函数中所做的是:
var tempContainer = d3.select("#Container");
var test = tempContainer.selectAll("rect");
这给了我一个包含 1 个对象的数组,该对象是一个包含 6 个矩形的数组,然后我遍历该数组以找到我想要的矩形。
for (var i = 0; i < test[0].length; i++) {
if (search.item.desc == test[0][i].attributes[5].value)
{
var testing = test[0][i];
//testing.attributes[5].value works fine
//testing.click(); does not work
//testing.on('click')(); does not work
}
}
在 for 循环中,变量 'testing' 是我想要的矩形,我可以像在上面的 if 语句中那样访问它的属性。但是我无法访问和触发点击功能
单击事件函数可以通过以下方式访问:
testing.__onclick();