【发布时间】:2017-01-10 08:21:02
【问题描述】:
我正在尝试在圆半径变大的情况下进行鼠标悬停事件,并且相应的数据标签会增加字体大小。数据标签位于图表本身的圆圈上。所以我的想法是有两个函数,一个是通过过渡设置圆的漂亮和平滑的样式,并使用一个单独的函数和补间来设置文本的样式。 我想同时调用这两个函数,并且只让它们的样式对象具有与其“id”匹配的数据绑定。id 只是我从 .tsv 解析的索引。这个想法是文本和圆圈都有相同的“id”。
!boring circle svg code above
.on('mouseenter', function(d) {circle_event(this); text_event(this);})
function circle_event(id) {
if (d3.select(this).data==id) {
d3.select(this)
.transition()
.attr('r', radius*1.5)
.duration(500);
}
}
function text_event(id) {
if (d3.select(this).data==id) {
d3.select(this)
.transition()
.styleTween('font', function() {return d3.interpolate('12px Calibri', '20px Calibri' )
.duration(500);
}
}
由于某种原因,当我将鼠标悬停在圆圈上时,什么也没有发生。开发工具没有任何错误。如果我不得不猜测,我误解了如何使用 d3 的 select 函数。
谢谢
编辑
请注意,我需要同时调用圆形和文本样式函数我将接受显示如何设置圆形样式及其相应 data_label 文本的答案只需将鼠标悬停在 CIRCLE 上。似乎this 不能同时用作圆形和文本对象。欢迎使用基于this 的其他解决方案。
【问题讨论】:
标签: javascript d3.js