Javascript Highcharts手动设置legendItemClick事件
我需要设置plotOptions->events->legendItemClick,但在单击按钮时手动设置 我想它应该是类似于chart.plotOptions.events.legendItemClick=function(){…};但这显然不是解决办法 我甚至不确定这是否可行,我只能在图表创建中实现它 对此,我们非常感谢您的指导。谢谢 通过创建在highcharts中设置:Javascript Highcharts手动设置legendItemClick事件,javascript,jquery,highcharts,Javascript,Jquery,Highcharts,我需要设置plotOptions->events->legendItemClick,但在单击按钮时手动设置 我想它应该是类似于chart.plotOptions.events.legendItemClick=function(){…};但这显然不是解决办法 我甚至不确定这是否可行,我只能在图表创建中实现它 对此,我们非常感谢您的指导。谢谢 通过创建在highcharts中设置: plotOptions: { series: { events: {
plotOptions: {
series: {
events: {
legendItemClick: function() {
// Do something
}
}
}
}
我想做的是。。。(创建后)
我们这样做,但在
legendItemClick
本身中。这对我们来说是可行的,因为我们只有两个状态。第一个是初始加载,我们使用默认图例单击操作生成图表(所有系列都可见,单击图例中的系列会隐藏该系列,再次单击该系列会显示该系列)。另一种状态是,用户在ddl中选择了一个显示选项,该选项将删除除一个序列外的所有可见序列,然后用户可以单击图例项并仅显示该项。我们这样做:
function(event) {
var e = document.getElementById('" & gModeElementId & "');
var strGraphMode = e.options[e.selectedIndex].value;
if (strGraphMode == 'single') {
var seriesIndex = this.index;
var serie = this.chart.series;
for (i = 0; i < serie.length; i++) {
if (serie[i].index == seriesIndex) {
serie[i].show();
var ctitle = this.chart.yAxis[0].axisTitle;
ctitle.attr({text: serie[i].name});
} else {
serie[i].hide();
}
}
return false;
}
}
功能(事件){
var e=document.getElementById(“&gModeElementId&”);
var strGraphMode=e.options[e.selectedIndex].value;
如果(strGraphMode=='single'){
var seriesIndex=该指数;
var serie=this.chart.series;
对于(i=0;i
我们还没有找到一种方法来实际修改现有的
legendItemClick
函数。我们这样做,但是在legendItemClick
本身中。这对我们来说是可行的,因为我们只有两个状态。第一个是初始加载,我们使用默认图例单击操作生成图表(所有系列都可见,单击图例中的系列会隐藏该系列,再次单击该系列会显示该系列)。另一种状态是,用户在ddl中选择了一个显示选项,该选项将删除除一个序列外的所有可见序列,然后用户可以单击图例项并仅显示该项。我们这样做:
function(event) {
var e = document.getElementById('" & gModeElementId & "');
var strGraphMode = e.options[e.selectedIndex].value;
if (strGraphMode == 'single') {
var seriesIndex = this.index;
var serie = this.chart.series;
for (i = 0; i < serie.length; i++) {
if (serie[i].index == seriesIndex) {
serie[i].show();
var ctitle = this.chart.yAxis[0].axisTitle;
ctitle.attr({text: serie[i].name});
} else {
serie[i].hide();
}
}
return false;
}
}
功能(事件){
var e=document.getElementById(“&gModeElementId&”);
var strGraphMode=e.options[e.selectedIndex].value;
如果(strGraphMode=='single'){
var seriesIndex=该指数;
var serie=this.chart.series;
对于(i=0;i
我们还没有找到一种方法来实际修改现有的
legendItemClick
函数。不清楚您在问什么。您可以设置legendItemClick
功能来执行您想要的操作,是的。但是,没有看到代码,我们就不知道那是什么。我认为你想要的是在点击HTML按钮时触发legendItemClick?在创建highcharts时声明它不是问题。我想在创建后声明它。问题不是我在事件legendItemClick中做了什么,而是我如何在执行此操作时通过图表变量设置它。var chart=$(“#容器”).highcharts();chart.plotOptions.series.legendItemClick=function(){…};这种方法行不通,需要知道是否有可能这样做。不清楚你在问什么。您可以设置legendItemClick
功能来执行您想要的操作,是的。但是,没有看到代码,我们就不知道那是什么。我认为你想要的是在点击HTML按钮时触发legendItemClick?在创建highcharts时声明它不是问题。我想在创建后声明它。问题不是我在事件legendItemClick中做了什么,而是我如何在执行此操作时通过图表变量设置它。var chart=$(“#容器”).highcharts();chart.plotOptions.series.legendItemClick=function(){…};这种方法不起作用,需要知道是否有可能这样做。“我们还没有找到一种方法来实际修改现有的legendItemClick函数。”这正是我想要的答案,但我并不希望如此。谢谢你的详细回答。我想我必须制定另一个策略。我应该注意,我们是从.NET后端构建的(因此getElementById(“&gModeElementId&”)
)。所以,如果您这样做了,您可以动态地构建函数。或者,让legendItemClick
函数成为您在页面上编写的其他函数。但是,是的,这是一个创建一次并不幸地处理它的事情。this.chart.series部分对我很有用。谢谢“我们还没有找到一种方法来实际修改现有的legendItemClick函数。”这正是我想要的答案,但我并不希望如此。谢谢你的详细回答。我想我必须制定另一个策略。我应该注意,我们是从.NET后端构建的(因此getElementById(“&gModeElementId&”)
)。所以,如果您这样做了,您可以动态地构建函数。或者,让legendItemClick
函数成为您在页面上编写的其他函数。但是,是的,这是一个创建一次并不幸地处理它的事情。this.chart.series部分对我很有用。谢谢