用d3.js替换jQuery的最后一位 - 具有css-attribute更改的选择

时间:2013-03-10 17:19:16

标签: javascript jquery d3.js

这是代码中jQuery的最后一点 - 就像这一切都有效:

var colourchange = function () {
  var my_selection = d3.select(this);
  var selection_class = my_selection.attr("class");

  $("." + selection_class)
    .css("fill", "yellow");
};

要避免使用jQuery库(仅适用于此行!)我试图用d3.js代码替换它 - 这仍然是代码的主要部分。这就是我所拥有的:

var colourchange = function () {
  var my_selection = d3.select(this);
  var selection_class = my_selection.attr("class");

  d3.selectAll("." + selection_class)
    .attr("fill", "yellow");
};

但它不起作用。我很确定我错过了一些非常明显的东西。

编辑:也许我应该提一下我如何调用这个函数......

<d3 - selection>
    .data(my_data)
    .enter().append("rect")
    .attr(...) etc.
    .on("mouseover", colourchange)

该函数的效果应该应用于鼠标悬停的元素和具有相同类的其他元素。

1 个答案:

答案 0 :(得分:1)

我会将.attr("fill", "yellow")更改为.style("fill", "yellow")

使用.attr()会导致<rect fill="yellow" ...>而不是<rect style="fill: yellow;" ...>,这可能会导致您的问题。