2

我做了一个散点图,并想为每个点添加一个链接。

    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;    
    });

如果我只是将纯字符串链接(例如 window.location = "http://stackoverflow.com"

jquery 和 javascript 都不起作用(如评论。)

我也尝试了一个外部js文件,仍然失败。

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

4

1 回答 1

8

如果它适用于静态字符串,则 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)

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

于 2012-05-13T04:16:48.363 回答