将OnClick事件添加到条形图

时间:2013-05-23 13:43:44

标签: javascript d3.js

这是我所拥有的所有代码,"on click"部分出了问题,我无法弄清楚。  它出错并说“钻头未定义” 是不是我们可以在D3部分中绘制的其中一个条形图的点击事件上调用方法?

$( document ).ready(function() {

    gon.data.pop(); // get rid of query_time element.
    var dataset = gon.data;

    function drill(d, i) {
        console.log(d.total_count); //data object
        var url = "http://localhost:4567/drill/" + d.brand_name + "/" + d.generic_name;
        window.location.href = url;
    }

    d3.select("body").selectAll("div")
        .data(dataset)
        .enter()
        .append("div")
        .attr("class", "bar")
        .attr("onclick", "drill()")
        .style("height", function(d) {
            return d.brand_name + "px";
        });
});

3 个答案:

答案 0 :(得分:7)

要为选择添加事件侦听器,您应该使用selection的on方法。

你可以写

d3.select("body").selectAll("div")
    .data(dataset)
    .enter()
    .append("div")
    .attr("class", "bar")
    .on("click", drill)
    .style("height", function(d) {
        return d.brand_name + "px";
    });

答案 1 :(得分:1)

drill函数的声明移到文档就绪处理程序之外。

更好的是,使用d3提供的on方法,而不是onclick属性。

答案 2 :(得分:0)

如果需要,你也可以使用jQuery .click(),这是一个例子

$("#test").click(function(){
     sayHello();   
});

这里的jsfiddle: http://jsfiddle.net/SGRmX/1/