在鼠标悬停D3js上选择元素的类

时间:2013-09-09 04:23:04

标签: javascript d3.js

我有一个非常简单的问题,但我找不到解决方案。我制作了一组圆圈,每个圆圈都有一个分配的类。在mouseOver上,我想要改变所有圆圈的属性,使其与鼠标所在的圆圈相同。

这是我的代码

svg.selectAll(".filas")
                    .data(new Array(18))
                    .enter().append("g")
                    .attr("class","filas")
                    .attr("transform", function (d,i) { return "translate(400," + ((20*i)+20) + ")";})
                    .selectAll("circle")
                    .data(function () {
                        return new Array(4);
                    })
                    .enter().append("circle")
                    .attr("cy", 0)
                    .attr("cx", function (d,i) {return -1 * (i+4) * 30;})
                    .attr("r", 10);

        //set classes to circles

                svg.selectAll("circle")
                    .data(data)
                    .attr("class", function(d) {
                        return (d) ? "fp_" + d : null;
                    })
                    .on("mouseover", mouseover)
                    ;



                function mouseover(clase) {

                         svg.selectAll(".fp_K")
                            .transition()
                            .duration(500)
                            .style("opacity", .2);

我为每个圆圈添加了.on(“mouseover”,mouseover),但我不知道如何编写该函数。到目前为止,我只为在函数鼠标悬停中选择的类更改了属性。

提前致谢。

这是整个代码

http://jsfiddle.net/ploscri/t5ams/

2 个答案:

答案 0 :(得分:3)

变化:

svg.selectAll(".fp_K") 

svg.selectAll("." + this.getAttribute('class'))

答案 1 :(得分:1)

使用selection.filter(selector)

circles.on('mouseover', function() { 
  var self      = d3.select(this),
      c         = self.attr('class'),
      selection = circles.filter(function() {
        return d3.select(this).attr('class') === c;
      });
});

认为你可以从这里拿走它?