SVG矩形单击eventlistener

时间:2014-08-19 07:15:56

标签: javascript svg d3.js addeventlistener

我已经按照以下方式绘制了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');
                    } 

1 个答案:

答案 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
}

请参阅selection.on(type[, listener[, capture]]) documentation