我使用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
答案 0 :(得分:0)
我明白了。只需在刷函数中添加一行代码
if (d3.event.sourceEvent.type !== 'end') {
// previous code move into here
}