通过事件侦听器在匹配圆ID的文本上修改圆元素

断层

首先,对长标题感到抱歉,我无法提出更好的解释我的问题的方法。
我所拥有的是一个散点图,circles根据d.FamilyName我的csv中具有不同的ID 一些圈子共享相同的ID。
在该散点图的右侧,我设置了一个div,其中包含所有d.Familyname值的列表,嵌套这些值使它们仅显示一次。每个文本的ID也由d.FamilyName设置。
为了提高散点图的可读性,因为它具有许多值,我正计划event listener在文本上添加鼠标悬停,然后应该修改与文本共享相同ID的圆的半径。
每个圆都绘制在内,var circle而文本则绘制在div内,这是圆和文本部分的代码:

var circle = svg.append("g")
                .attr("id", "circles")
                .selectAll("circle")
                .data(dataset)
                .enter()
                .append("circle")
                .attr("cx", function (d) { return x(d.SquadraturaInterna_o); })
                .attr("cy", function (d) { return y(d.SquadraturaEsterna_o); })
                .attr("r", 2)

在radius属性之后,有一个事件侦听器来显示指定圆的其他值(名称和坐标),但它们与我认为的问题无关。文字部分:

d3.select("#elenco")
.select("#value")
.selectAll("text")
.data(nested)
.enter()
.append("p")
.append("text")
.attr("id", function (i) { return (i).key; })
.text(function (i) { return (i).key; })
.on("mouseover", function (d, i) {
            if (this.id == circle.id) 
            {d3.select("circle")
                .attr("r", 5);
            }
            else {d3.select("circle").attr("r", 1);}

        ;})
.on("mouseout", function (d, i) {
            d3.selectAll("circle")
                .attr("r", 2);
    });

这个问题当然是对的if statementmouseover
非常感谢您提供有关如何解决此问题的任何提示,谢谢!

编辑:感谢@Lars的回复,我可以对他的代码进行一些编辑,例如:

.on("mouseover", function (d) {
    var sel = this.id;
    circle.filter(function() { return this.id === sel; }).attr("r", 5); })
.on("mouseout", function (d, i) {
            d3.selectAll("circle")
                .attr("r", 2); }
    );
拉尔斯·科特霍夫(Lars Kotthoff)

作为@musically_ut方法的替代方法,您还可以使用该.filter()函数仅修改所需的元素。

.on("mouseover", function(d) {
    circle.filter(function() { return this.id === d.FamilyName; }).attr("r", 5);
})
.on("mouseout", function(d) {
    circle.filter(function() { return this.id === d.FamilyName; }).attr("r", 1);
})

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在动态创建的元素上添加事件侦听器

HTML元素列表上的事件侦听器

JS:隐藏元素上的事件侦听器

数组元素上的简洁事件侦听器

新元素的事件侦听器(单击)。

画布在事件侦听器上消失

如果我只知道父元素的类或 ID,如何在子文本区域上设置模糊侦听器?

JS-为与querySelectorAll匹配的所有元素添加单击事件侦听器

触摸侦听器上的文本视图

单击标签元素内的文本时,Javascript事件侦听器将触发两次

通过添加大小调整事件侦听器来更新DOM元素的高度

如何通过JavaScript将事件侦听器添加到body元素?

如何为我们通过 javascript 创建的元素添加事件侦听器?

修改HTML标签而不丢失附加的事件侦听器

如何从 vanilla JS 事件侦听器修改 Vue 数据?

在长文本中的每个单词上设置事件侦听器

如何在事件侦听器上获取第一个 div 元素

Javascript Vanilla-如何在ajax内容内的元素上附加事件侦听器?

如何在DOM元素上查找事件侦听器列表?

将事件侦听器保留在列表的最后一个元素上

具有相同类的多个元素上的事件侦听器

如何在尚未在 DOM [no-jQuery] 中的元素上添加事件侦听器?

如何使用 redux-observable 在 dom 元素上添加事件侦听器

通过JButton上的事件侦听器更改变量值

文本更改事件未进入侦听器

单选按钮和文本输入的事件侦听器

使用Jquery禁用文本框内的事件侦听器

移相器文本事件无法识别侦听器功能

如何创建检查div元素样式的事件侦听器?