使用d3中的选择器进行后续样式(仅最后一个生效)

时间:2015-09-28 09:39:28

标签: javascript d3.js

在以下代码中,我想在g++ -Wl,-s -Wl,-subsystem,windows -mthreads -o release\TestFtdi.exe release/main.o release/testftdi.o release/moc_testftdi.o -lmingw32 -LC:/Qt/5.5/mingw492_32/lib -lqtmain -lshell32 -LF:\Workspace\qt\libs\ftdi\Static\amd64 -lftd2xx -lQt5Widgets -lQt5Gui -lQt5Core 事件发生时更改svg circle元素的样式。问题是click的更改只要在更改opacity之前生效(只有最后一次更改生效)才会生效。

fill

知道如何解决这个问题以及为什么会这样?

1 个答案:

答案 0 :(得分:1)

在选区上创建转场会取消任何现有转场。因此,当您创建第二个时,您将取消第一个。要修复,只需链接样式更改:

d3.selectAll('.nodeCircle').transition()
  .style('opacity', function() {
        var itrCircle = this;
        return (neighbors.indexOf(itrCircle.id) === -1) ? itrCircle.style.opacity : 1;
  })
  .style('fill', function() {
        var itrCircle = this;
        return (neighbors.indexOf(itrCircle.id) === -1) ? itrCircle.style.fill : 'red';
  });