D3.js - 更改鼠标悬停时元素的不透明度 IF 条件 = false

2024-05-24

我正在制作一个带有过滤器的交互式 D3.js 图表,当用户单击选定的复选框时,该过滤器会显示点。此外,在鼠标悬停事件上,所选点旁边将出现一个弹出窗口,其中包含一些信息。

由于图表上的点数量相对较多,因此我选择在取消选中相应复选框时使相关点变得透明,而不是删除点并重新绘制它们(这在较慢的机器上会有点滞后)。

我目前拥有的代码可以工作。显示工具提示的代码也有效。然而,它们不能很好地协同工作。

当取消选择数据点时,用户看不到它,但由于它仍然存在,浏览器仍然会在鼠标悬停时显示取消选择的点的工具提示。因此,当用户将鼠标移动到当前透明点上时,我遇到了出现“幻影”工具提示的问题。

我试图将使工具提示出现在if语句如下所示,但这不起作用。不确定我的语法是否错误或者此行为是否不正确。

这是大部分有效的原始代码。出现工具提示,右侧数据点变为透明,但工具提示出现在透明点上方。

    svg.selectAll("path")
        .data(dataSet)
        .enter().append("path")
        .attr("class", "dot")
       //other stuff goes here

        //code to make tooltip appear on mouseover
        .on("mouseover", function(d) {
            if(d.style("opacity", 0)=false){
                div.transition()        
                    .duration(200)      
                    .style("opacity", .8);      
                div .html(d.datetime.substring(0,10) )  
                    .style("left", (d3.event.pageX + 5) + "px")     
                    .style("top", (d3.event.pageY - 24) + "px");    
                }
            })                  
        .on("mouseout", function(d) {       
            div.transition()        
                .duration(500)      
                .style("opacity", 0);   
        })

    //code for tooltip itself
    var div = d3.select("body").append("div")   
        .attr("class", "tooltip")               
        .style("opacity", 0);   
    });     


 //code to make de-selected points transparent
    d3.selectAll("[name=cat1]").on("change", function() {
        var selected = this.value;
        display = this.checked ? "inline" : "none";
    svg.selectAll(".dot")
        .filter(function(d) {return selected == d.rainSnowStatus;})
        .attr("display", display);
        }); 

这就是我试图做的(在鼠标悬停函数中放置一个 if 语句,以便它仅在数据点不透明时激活),但它不起作用(工具提示无法完全显示)。

      //tooltip code within an if statement; does not work
        .on("mouseover", function(d) {
            if(svg.dot.style("opacity", 0)==false){      //  << IS THIS RIGHT?
                div.transition()        
                    .duration(200)      
                    .style("opacity", .8);      
                div .html(d.datetime.substring(0,10) )  
                    .style("left", (d3.event.pageX + 5) + "px")     
                    .style("top", (d3.event.pageY - 24) + "px");    
                }
            })                  
        .on("mouseout", function(d) {       
            div.transition()        
                .duration(500)      
                .style("opacity", 0);   
        })

任何帮助表示赞赏。谢谢!


您可以获取当前值opacity通过运行属性d3.select(this).style("opacity"),所以要检查它在你的mouseover你会做的处理程序

.on("mouseover", function(d) {
        if(d3.select(this).style("opacity") != 0){
            div.transition()        
                .duration(200)      
                .style("opacity", .8);      
            div .html(d.datetime.substring(0,10) )  
                .style("left", (d3.event.pageX + 5) + "px")     
                .style("top", (d3.event.pageY - 24) + "px");    
            }
        })
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

D3.js - 更改鼠标悬停时元素的不透明度 IF 条件 = false 的相关文章

随机推荐

  • 在哪里可以找到Python内置序列类型的时间和空间复杂度

    我一直无法找到此信息的来源 无法亲自查看 Python 源代码来确定这些对象是如何工作的 有谁知道我可以在网上找到这个吗 结帐时间复杂度 http wiki python org moin TimeComplexitypy dot org
  • 带有延迟的 jQuery 切换类只能运行一次

    当涉及到 jQuery 匿名函数和延迟时 我显然错过了一些基本的东西 下面的代码每次页面加载只能运行一次 它将添加该类 然后在 1 秒后将其删除 如果我再次单击 它将添加该类 但在页面持续时间内永远不会删除该类 除非我重新加载页面 var
  • 如何同步nosql db(ravendb)中的更改

    我已经开始在 RavenDB 的示例上学习 NoSQL 我从一个最简单的模型开始 假设我们有由用户创建的主题 public class Topic public string Id get protected set public stri
  • 在模拟器中启动应用程序后,“React Native run android”立即停止

    我正在尝试测试我的 Android 应用程序 但是当我启动它时react native run android命令在设备上启动后立即停止 不会出现错误 我懂了 This build could be faster please consid
  • C++ 中是否有与 PHP 的explode() 函数等效的函数? [复制]

    这个问题在这里已经有答案了 可能的重复 在 C 中分割字符串 https stackoverflow com questions 236129 splitting a string in c 在 PHP 中 explode 函数将获取一个字
  • rustup install stable 下载过程中出现错误

    我使用命令安装 Rust curl sSf https static rust lang org rustup sh sh 当我跑步时 rustc main rs 这出现了 error no default toolchain config
  • 求一根棒可以切割的最大片数

    这是完整的问题陈述 给定一根长度为n的绳子 你需要找到最大的绳子数你可以让每一段的长度都在集合 a b c 中给定三个值a b c 我知道可以通过动态规划来实现最优解 但是 我还没有学过这个主题 我需要递归地解决这个问题 对于递归 主要的事
  • JSP 和 scriptlet

    我知道现在使用 scriptlet 被认为是禁忌 没关系 我会同意Top Star的话 因为我目前只是Java新手 到目前为止我听到的是 它是为了让设计师的生活更轻松 但我想知道 这是否与JSP页面的性能有关 另一方面 如果只是为了 让设计
  • 选择合适的IDE

    您会推荐使用以下哪种 IDE 语言来在 Windows 下开发涉及识别手势并与操作系统交互的项目 我将使用 OpenCV 库来执行图像处理任务 之后 我将使用 win32 API 或 NET 框架与操作系统交互 具体取决于您建议的工具 性能
  • 如何将 PhoneGap 调试控制台与 CLI 集成?

    PhoneGap 网站上的此页面http docs phonegap com en 3 3 0 guide cli index md html The 20Command Line 20Interface http docs phonega
  • 以模态方式呈现 UIImagePickerController 时出错

    我有一个奇怪的问题UIImagePickerController在我的 iOS 6 应用程序中以模态方式显示 这XCode给我这个错误 Warning Attempt to present
  • 使用 unnest() 返回行?

    我尝试在完成后返回一组行UPDATE 像这样的东西 UPDATE Notis new noti SET notis noti record type FROM SELECT FROM Notis WHERE user id 2 FOR UP
  • APC 将数据存储在哪里?

    我想用apc store 缓存一些结果 但我需要知道数据将存储在哪里 以及限制是什么 它总是存储在内存中吗 或者也写入磁盘 我希望将不经常访问的数据存储在磁盘上 我应该为此使用不同的缓存系统吗 这就是极限了吗 apc shm size 32
  • 我们如何在 Go 中使用通道来代替互斥锁?

    通道将通信 值的交换 与同步相结合 保证两个计算 goroutine 处于已知状态 如何使用 Google Go 中的通道来执行互斥量的功能 package main import sync var global int 0 var m s
  • 如何在 Nest js 中启用或禁用缓存?

    假设我们希望在开发服务器上运行时禁用缓存并在生产服务器上启用缓存机制 而不是添加和删除 CacheInterceptor 拦截器 我们该怎么做呢 Get UseInterceptors CacheInterceptor getData re
  • SQL Union All 查询中的排序规则冲突

    有一个 Union All 查询 如下所示 当在 SQL Server 中触发时 出现错误 无法解决 SELECT 语句中第 1 列的排序规则冲突 请问 在哪里添加带有此 Union All 查询的 Collat e database de
  • ClearCase:查找仅具有一个特定标签而不是更多标签的文件

    我想在 ClearCase 中查找标有特定标签的文件 但是没有设置任何其他标签 例如 如果我有这样标记的文件 file1 LBL A LBL B file2 LBL A 我想要一个只提供 file2 而不是 file1 的查询 有没有办法用
  • 尽管有障碍,Open CL 仍不同步

    我刚刚开始通过 Python 的 PyOpenCL 接口使用 OpenCL 我尝试创建一个非常简单的 循环 程序 其中每个内核中每个循环的结果取决于上一个循环周期的另一个内核的输出 但我遇到了同步问题 kernel void part1 g
  • 在 UIAlertController 的文本字段中选择文本

    我需要在 UIAlertController 出现后立即选择文本字段的文本 但是 我在标准 UITextField 中选择文本的方式在这里不起作用 这就是我尝试过的 但我似乎无法让它发挥作用 let ac UIAlertController
  • D3.js - 更改鼠标悬停时元素的不透明度 IF 条件 = false

    我正在制作一个带有过滤器的交互式 D3 js 图表 当用户单击选定的复选框时 该过滤器会显示点 此外 在鼠标悬停事件上 所选点旁边将出现一个弹出窗口 其中包含一些信息 由于图表上的点数量相对较多 因此我选择在取消选中相应复选框时使相关点变得