(從註釋部分移動本)
更新看看這個:https://jsfiddle.net/xvLgq8mn/
在您選擇的updateChart功能由circle
類:
// update the circles at each data points
svg.selectAll('.circle') // here you correctly select all with the circle class
.data(this.props.data)
.attr('class', 'circle all')
.transition()
.duration(500)
.attr('cx', (d) => { return this.axis.x(d.time);})
.attr('cy', (d) => { return this.axis.y(d.count);});
但在這裏,鼠標懸停,你circle--highlight
刪除circle
類和替換:
group.selectAll()
.data(this.props.data)
.enter().append('circle')
.attr('class', 'circle all')
.attr('cx', (d) => { return this.axis.x(d.time);})
.attr('cy', (d) => { return this.axis.y(d.count);})
.attr('r', 4)
.on('mousemove', function(d) {
// START: Show tooltip
div.transition()
.duration(1000)
.style('opacity', 1);
div.html('<div class="date--time">'
+ d.time
+ '</div><div class="count">' + d.count + ' incidents</div>')
.style('left', (d3.event.pageX) + 'px')
.style('top', (d3.event.pageY - 70) + 'px');
d3.select(this)
.attr('r', 6)
.attr('class', 'circle--highlight'); // here you change the class from circle all
// to just circle--highlight,
// so when you are hovering a circle and the chart changes,
// the circle you have hovered won't be updated because
// it won't be selected due to the class difference
// END: Show tooltip
})
.on('mouseleave', function() {
// hide tooltip and return the circles to original style
div.transition()
.duration(500)
.style('opacity', 0);
// set the circle back to normal
d3.select(this)
.attr('r', 4)
.attr('class', 'circle all');
});
因此,一個解決辦法是也與circle--highlight
這樣一起添加circle
類:
d3.select(this)
.attr('r', 6)
.attr('class', 'circle circle--highlight');
或更改您的選擇在updateChart這樣的:
svg.selectAll('circle')
但需要對腳本進行更多的調整才能使其按預期工作。
希望這會有所幫助!祝你好運!
您必須向我們展示一些代碼,以便我們可以嘗試診斷它。 – Adam
下面是jsfiddle上顯示問題的示例代碼。嘗試將鼠標指向一個圓圈並等待數據刷新。 https://jsfiddle.net/zg4dhd2g/34/ –
看看這個:https://jsfiddle.net/xvLgq8mn/問題是,在你設置'mousemove'的drawCircles中,你修改了class從「circle all」到「circle - highlight」的圓圈,因此當你更新圖表並且執行:'svg.selectAll('。circle')'時,你會突出顯示突出顯示的部分。 – mkaran