我已经按照以下方式绘制了svg矩形,我试图以下面的方式向它添加一个click事件。但是,代码无效。我哪里错了?
var enterElements = svgContainer.selectAll("rect")
.data(series).enter().append("rect")
.attr("x", function(d, i){
return xPosLoop[i];
})
.attr("height", function(d,i){
return elementHeight[i];
})
.attr("y", function(d, i){
return yPosLoop[i];
})
.attr("width", function(d,i){
return elementWidth[i];
})
.attr("rx", 7)
.attr("fill", function(d, i){
return color[i];
})
.addEventListener('click', rect_click)
.attr("stroke", "#006ec5")
.attr("stroke-width", 1);
function rect_click(event)
{
console.log('I was clicked');
}
答案 0 :(得分:1)
您正在使用d3选择,而不是DOM元素本身。要为选择的元素分配事件侦听器,您可以执行以下操作:
.on('click', clickHandler)
clickHandler
传递当前数据和元素索引。要访问该活动,请使用d3.event
:
function clickHandler(d, i) {
// d is the datum
// i is the index
// this is the reference to the current element
// d3.event is the reference to the current event
}