d3.js,单击以链接到使用变量编码的另一个URL

时间:2012-05-13 03:57:54

标签: javascript jquery d3.js

我制作了散点图,并希望为每个点添加一个链接。

    chart.selectAll("scatter-dots")
      .data(data)
      .enter().append("circle")
        .attr("cx", function (d) { return x(d.position[0]); } )
        .attr("cy", function (d) { return y(d.position[1]); } )
        .attr("r", 4)
        .style("fill", "#666")
        .style("opacity", 0.5)
    .on("click", function(){
        var url = "http://somelink.com/link.php?id=";
        url += d.link_id;
        //$(location).attr('href', url);
        //window.location = url;    
    });

如果我只是把纯String链接如 window.location =“http://stackoverflow.com” 但是,如果我从变量向URL的末尾添加查询,则页面不会重定向。

jquery和javascript都没有工作(如评论。)

我还尝试过外部js文件,但仍然失败。

这是在PHP文件中,如果这有帮助。

1 个答案:

答案 0 :(得分:7)

如果它适用于静态字符串,则d.link_id出现问题。尝试通过alert(d.link_id)或使用萤火虫或类似物来console.log(d.link_id)看看里面有什么。

或者,您应该使用真正的锚点来链接节点而不是设置点击事件。这就像... ...

chart.selectAll("scatter-dots")
  .data(data)
  .enter()
  .append("a")
    .attr("xlink:href", function(d) {return "http://somelink.com/link.php?id=" + d.link_id})
    .append("circle")
      .attr("cx", function (d) { return x(d.position[0]); } )
      .attr("cy", function (d) { return y(d.position[1]); } )
      .attr("r", 4)
      .style("fill", "#666")
      .style("opacity", 0.5)

(我似乎无法回想起这是否是这样做的确切方法,您可能需要将锚点保存在变量中,然后将圆圈附加到它们。)