以下是该方案。我在一个页面上有多个highstocks
说10个图表。目前,我已经编写了500行代码来定位图例,显示工具提示并刷新mousemove上的图例值。
没有。每个图表的图例各不相同。 在鼠标移动时更新所有图例的值。我需要优化我使用的代码highstocks
v1.2.2。
上面的截图显示了2个图表。 Return
,Basket
,vs Basket Spread
是图例,每次鼠标移动都会更新其值。
请找this fiddle for example。在我的例子中,传说是定位和更新鼠标移动值与数百行代码。 当我移动鼠标时,会更新第一个图表的Return
和Basket
以及vs Basket Spread
的图例值的图例值。它工作正常但有很多javascript
代码。所以我需要优化代码或使用highstocks内置功能。</ strong>
更新
用户@wergeld发布了new fiddle。正如我在截图中显示的,当在任何图表上移动十字准线时,应更新所有图表的图例值。
无论如何使用更少的代码实现相同的功能,或者highstocks
中是否有内置功能
答案 0 :(得分:0)
基本示例是使用events.mouseover
方法:
plotOptions: {
series: {
point: {
events: {
mouseOver: function () {
var theLegendList = $('#legend');
var theSeriesName = this.series.name;
var theYValue = this.y;
$('li', theLegendList).each(function (l) {
if (this.innerText.split(':')[0] == theSeriesName) {
this.innerText = theSeriesName + ': ' + theYValue;
}
});
}
}
}
}
}
这假设我已将<li>
修改为:
$('<li>')
.css('color', serie.color)
.text(serie.name + ': NA')
.click(function () {
toggleSeries(i);
})
.appendTo($legend);
然后你需要处理mouseout
事件,但我不知道你想在那里做什么。
工作example。
编辑: 这是version使用您的参考OHLC图表,当图表中的任何点悬停时,将值放在不同的图例位置。
plotOptions: {
series: {
point: {
events: {
mouseOver: function () {
//using the ohlc and volumn data sets created at runtime.
var stockVal = ohlc[this.index][4]; // show close value
var stockVolume = volume[this.index][1];
var theChart = $('#container').highcharts();
var theLegendList = $('#legend');
$('li', theLegendList).each(function (l) {
var legendTitle = theChart.series[l].name;
if (l === 0) {
this.innerText = legendTitle + ': ' + stockVal;
}
if (l === 1) {
this.innerText = legendTitle + ': ' + stockVolume;
}
});
}
}
}
}
}