javascript - 获取.attr ("display":none) to work on mouseout (D3. js)

标签 javascript d3.js data-visualization

我正在制作一个带有数据点弹出窗口/工具提示的交互式 D3.js 可视化,以便在鼠标悬停事件中,所选点旁边会出现一个弹出窗口,其中包含一些信息

目前我已经使用下面的代码实现了这一点——工具提示出现在鼠标悬停时。当用户将鼠标移动到另一个点时,原始工具提示消失,正确的工具提示出现在新数据点旁边。

但是,mouseout 事件没有正常运行 - 一旦鼠标离开数据点,工具提示就不会消失。例如,如果用户没有将鼠标移到新数据点上,旧的工具提示将保留在那里。

相关代码:

   svg.selectAll("path")
        //other stuff here
        .on("mouseover", function(d) {      
            div.transition()                
                .duration(200)   //mouseover transition does not seem to work, but that's minor
                .style("opacity", .8);      
            div .html(d.datetime.substring(0,10) )  
                .style("left", (d3.event.pageX + 5) + "px")     
                .style("top", (d3.event.pageY - 24) + "px")
                .attr("display", display);    
            })                  
        .on("mouseout", function(d) {       
            div.attr("display", none);   
        })

    //bit of code where I append the tooltip to the right element
    var div = d3.select("body").append("div")   
        .attr("class", "tooltip")               
        .style("opacity", .8);  
    });     

我做错了什么?

谢谢!

最佳答案

none 是一个字符串。所以你必须用引号将它括起来。另请注意,display 是一个 css 样式属性。所以它应该如下所示应用。

div.style("display","none");

实现相同的其他替代选项如下。

选项 2:

div.attr("hidden",true);//to hide
div.attr("hidden",null);//to show

选项 3:

div.style("opacity",0);//to hide
div.style("opacity",1);//to show

这是一个有效的代码片段。

var button = d3.select("body")
               .append("button")
               .text("Mouse Over Me");

button.on("mouseover",function(){    
    div.style("display","block");  
});
button.on("mouseout",function(){    
    div.style("display","none");  
});
var div = d3.select("body")
        .append("div")   
        .attr("class", "tooltip")               
        .style("display", "none")
        .text("Hello This is a sample");
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>

关于javascript - 获取.attr ("display":none) to work on mouseout (D3. js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30065481/

相关文章:

JavaScript 和 href

javascript - React - 存储为变量的组件未在嵌套组件中呈现

javascript - window.open() 现在还有用吗?

javascript - 在 Html 页面中显示 Excel 图表

javascript - d3.js 图代码创建额外的节点

javascript - DC.js 使图表容器或 div 更宽以正确显示图例

javascript - d3js : how to bind data within a single object

python - Holoviews 是否能够在绘图中用 0 填充缺失的日期?

javascript - 将特定元素移动到 GoJS 中的视口(viewport)中

r - 在 R 中使用 geom_boxplot() + geom_jitter() 时如何排除异常值