为什么节点类选择'在d3中brushend后消失了

时间:2018-06-05 08:01:13

标签: javascript d3.js

我使用d3强制布局节点和边。现在我想刷一些节点并添加类"选择"到刷过的节点。它在刷子过程中工作正常,但一旦刷子结束,该类"选择"消失了,我不知道为什么。这是我的代码:

  function brushstarted () {
    console.log('brush start')
    nodegroup.each(function (d) {
      d.selected = false
      d.previouslySelected = false
    })
  }

  function brushed () {
    let selection = d3.event.selection
    nodegroup.classed('selected', function (d) {
      d.selected = d.previouslySelected ^ (selection != null && selection[0][0] <= d.x && d.x < selection[1][0] && selection[0][1] <= d.y && d.y < selection[1][1])
      return d.selected
    })
  }

  function brushended () {
    console.log('brush end')
    if (d3.event.selection !== null) {
      d3.select(this).call(d3.event.target.move, null)
    }
  }

以下是&#34;刷过的节点&#34;国家和&#34; brushended&#34;正如你所看到的,在&#34; brushended&#34;状态,节点应该与#34; brushed&#34;相同,但它不是,这是我的问题,我该如何解决? nodes in "brushed" state nodes in "brushend" state

1 个答案:

答案 0 :(得分:0)

我明白了。只需在刷函数中添加一行代码

if (d3.event.sourceEvent.type !== 'end') {
    // previous code move into here
}