2014-11-06 70 views
0

我想使x轴的标签可点击以便文本包含链接。D3 - x轴的标签是链接

这里是我的代码小提琴至今:http://jsfiddle.net/3gLfb401/

x轴标签包含日期和版本号的。内部版本号应该是一个链接。 在这个例子中,它应该是足够的,如果它链接到google.com或其他东西。

我已经在网上搜索,发现了一些东西,可能会这样做,但我不知道如何放置它。

我觉得这样的事情可以工作:

x.html(d3.time.format("%Y-%m-%d")(d.date) + '<a href= "http://google.com" target="_blank">' + "#" + d.buildNb + "</a>") 

这是目前形成了标签的文本的方法是:

function formatDataToTick(d) { 
    return d3.time.format("%Y-%m-%d")(d.date) + " #" + d.buildNb; 
} 
+0

请参阅[这个问题](http://stackoverflow.com/questions/13104681/hyperlinks-in-d3-js-objects)。 – 2014-11-06 11:29:02

回答

2

试试这个。

var xLabels = svg.append("g") 
    .attr("class", "x axis") 
    .attr("transform", "translate(0," + height + ")") 
    .call(xAxis) 
    .selectAll("text") 
    .style("text-anchor", "end") 
    .attr("dx", "-.8em") 
    .attr("dy", ".15em") 
    .attr("transform", function(d) { 
     return "rotate(-65)" 
    }); 

var insertTspans = function(a) { 
    var b = a.split(" "); 
    var textNode = d3.select(this); 
    textNode.text(""); 
    textNode.append("tspan").text(b[0]); 
    var link = textNode.append("tspan").text(b[1]); 
    link.style("cursor", "pointer") 
     .style("fill","blue") 
     .style("text-decoration","underline") 
     .on("click", function(a) { 
     document.location.href = "http://www.example.com/" + a; 
     }); 
}; 

xLabels.each(insertTspans);