雖然我確實設法使用jQuery和Javascript來實現這個功能,但它從來沒有得到我想要的全部功能,所以我使用Sankey進行了報廢。但如果你想知道如何設置sankey.node.label爲一個HTML鏈接,這是我的解決方案:
$(document).ready(function() {
setTimeout(function(){
// Selects SVG TAG and ADDS LINK FUNCTIONALITY
var svgtag = document.querySelector("#sankey_multiple > div > div:nth-child(1) > div > svg")
$(svgtag).attr("xmlns:xlink", "http://www.w3.org/1999/xlink")
var linkNode = document.querySelector("#sankey_multiple > div > div:nth-child(1) > div > svg > g:nth-child(3) > text:nth-child(1)")
$(linkNode).wrap("<a xlink:href='examplelinkone.com'></a>")
var linkNode = document.querySelector("#sankey_multiple > div > div:nth-child(1) > div > svg > g:nth-child(3) > text:nth-child(3)")
$(linkNode).wrap("<a xlink:href='examplelinktwo.com'></a>")
$("#sankey_multiple").html($("#sankey_multiple").html());
}, 500);
});
首先,我們不得不把XLink的添加到SVG標籤,以使文本標籤的svg函數作爲鏈接。之後,我們可以將鏈接節點封裝在svg中,並將xlink鏈接到所需的URL。
但是,在此之後,我們仍然需要重新實例化SVG繪圖,以便使頁面上的鏈接更新。這個想法是「刷新全SVG」(如這裏建議:jquery's append not working with svg element?):
$("#svgid").html($("#svgid").html());
在這一點上
所以,我稱之爲加載頁面後,這100毫秒,這樣的鏈接將是地方的時候一切都加載。這工作得很好,鏈接加載和可追蹤。
但是這樣做「刷新」只是簡單地重寫了Sankey並覆蓋了其他東西,如工具提示功能。這就是我認爲這只是變得不守規矩,並決定追求不同的機智。
希望這可能會給別人一些關於如何使用這個最終工作的想法!