2014-07-11 80 views
0

我已經閱讀了幾篇文章和教程,但找不到足夠的答案,關於如何使用d3.select選擇svg的父div。我基本上只是想添加一個工具提示到包含我的圖表這樣的div。如何在D3.js中選擇svg的父div

//this selection probably doesn't make sense... 
var tooltip = d3.select("#pie-svg").select(this.parentNode).append("div") 
      .attr("class", "piechart-tooltip") 
      .style("opacity", 0); 

回答

0

沿this question行:

var tooltip; 
d3.select("#pie-svg").each(function() { 
    tooltip = d3.select(this.parentNode).append("div") 
     .attr("class", "piechart-tooltip") 
     .style("opacity", 0); 
}); 

與您發佈的問題的代碼的問題是,this不會被定義(或設置爲右元素)在此上下文。當與.each()一起使用時,它會。

+0

謝謝,這工作得很好。但是我現在正面臨將工具提示添加到正確位置的問題,因爲在使用d3.event.pageX和.pageY獲取鼠標座標之前,現在我需要知道與svg的父div相關的座標。我嘗試使用類似的方法和鼠標(容器),但在控制檯中它說'未定義不是函數',所以它不能識別父div。我將在下面發佈我的代碼,以便您可以看看。 – user3281466

+0

http://pastebin.com/uZVXbE4H – user3281466

+0

我只是試過鼠標(這),並沒有返回undefined。我假設問題是因爲我無法將父節點作爲容器傳遞給你..你有什麼建議,我可以解決這個問題,以便能夠將div容器傳遞給mouse()? div容器實際上是動態調整大小,因爲我的窗口縮小了,我不想使用鼠標(this),因爲這並不總是給我正確的位置。 – user3281466