2016-03-02 34 views
0

我正在嘗試最後一個內層氣泡發生onclick事件。我遇到2個問題,第一個是,如果我刪除此行:D3 Zoomable Pack Layout隱藏最後一個內層氣泡

.label, .node--root, .node--leaf { pointer-events: none; } 

它放大在最後泡內我點擊,但文本消失。我如何添加一個onclick事件到最後一個內心孩子? 繼承人我的jsfiddle:https://jsfiddle.net/23yaf9qd/

我試圖用jQuery,但它不工作

$("circle[id^='circle']").click(function() { 
    //my rest of code 
}); 
+0

當你點擊一片葉子時,你想要發生什麼?它應該放大並顯示它的名字,或者什麼都不做? – tarulen

+0

當我點擊一片葉子時,我希望它執行一個函數,該函數將ID作爲參數並打開一個包含基於該ID的信息的對話框。我知道如何創建對話框並填充數據。我只需要在葉上啓用點擊事件,而不是隱藏葉的標籤文本 – Jose

回答

0

如果你想顯示內部節點的名字時,他們放大時,您可以在現場showText添加到你的數據,如下所示:

transition.selectAll("text") 
    .each(function(d) {d.showText=(d.parent === focus || (d === focus && !d.children))}) 

然後你可以使用d.showText,而不是測試父(見https://jsfiddle.net/epkrgdok/

對於你的另一個問題:下面的行應該工作

d3.selectAll(".node--leaf").on("click",function(){alert("you've just clicked a leaf")}); 

但它似乎是在你的jsfiddle問題(它註冊事件的節點,但它觸發「RAES沒有定義」錯誤,你之前已經知道了,我不知道