【问题标题】:how to select parent div of svg in D3.js如何在 D3.js 中选择 svg 的父 div
【发布时间】:2014-07-11 10:40:15
【问题描述】:

我已经阅读了几篇文章和教程,但找不到关于如何使用 d3.select 选择 svg 的父 div 的足够答案。我基本上只是想在包含我的图表的 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);

【问题讨论】:

    标签: javascript svg d3.js


    【解决方案1】:

    按照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() 一起使用时,它会。

    【讨论】:

    • 谢谢,效果很好。但是我现在面临将工具提示添加到正确位置的问题,因为在我使用 d3.event.pageX 和 .pageY 获取鼠标坐标之前,但现在我需要知道与 svg 的父 div 相关的坐标。我尝试使用类似的方法并使用鼠标(容器),但在控制台中显示“未定义不是函数”,因此它无法识别父 div。我将在下面发布我的代码,以便您查看。
    • 我刚刚尝试了 mouse(this) 并没有返回 undefined。我假设问题是因为我不能将 parentNode 作为容器传递。你有什么建议可以解决这个问题,以便能够将 div 容器传递给 mouse() 吗?当我的窗口缩小时,div 容器实际上正在动态调整大小,我不想使用 mouse(this),因为这并不总是给我正确的位置。
    • 您可以对工具提示使用绝对定位,然后仍然使用pageXpageY
    • 我已经在使用绝对定位,但它仍然完全脱离了容器。
    • 你能发布一个完整的例子来说明问题吗?
    猜你喜欢
    • 2020-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-08
    • 2014-06-11
    • 2016-08-28
    • 1970-01-01
    相关资源
    最近更新 更多