首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对自定义图例执行onClick函数

对自定义图例执行onClick函数
EN

Stack Overflow用户
提问于 2018-03-01 19:17:16
回答 1查看 1.1K关注 0票数 0

我在options > legend > onClick中添加了一个函数"Pie_onClickLegend_HighlightOnSlice(event,legendItem)“,我想把它也用在我的自定义图例中。但我不知道如何将legendItem传递到我的图表之外。

在顶部:我的自定义图例( onClick不起作用)

在按钮上:“原始”图例(使用onClick函数)

我认为问题出在我调用函数"Pie_onClickLegend_HighlightOnSlice“的方式上。

代码语言:javascript
复制
document.getElementById('js-legend').innerHTML = 

chartTurn.generateLegend().replace(/\"0-legend"/g, 'legend');
$("#js-legend > ul > li").on("click", function(e) {
  var index = $(this).index();

  Pie_onClickLegend_HighlightOnSlice(e.originalEvent, chartTurn.legend.legendItems[index]);
  ci.update();

你有什么建议吗?我想问题出在

代码语言:javascript
复制
chartTurn.legend.legendItems[index]

但我不知道该用什么。

https://jsfiddle.net/stamina/x2pbnoes/89/

EN

回答 1

Stack Overflow用户

发布于 2018-03-02 15:38:34

在海狸的建议下,我找到了一个解决方案。我必须更改对函数的调用:

代码语言:javascript
复制
document.getElementById('js-legend').innerHTML = chartTurn.generateLegend().replace(/\"0-legend"/g, 'legend');
$("#js-legend > ul > li").on("click", function(event) {
  event = event || window.event;

  var target = event.target || event.srcElement;
  while (target.nodeName !== 'LI') {
    target = target.parentElement;
  }
  var parent = target.parentElement;
  var chart = Chart.instances[0];
  var index = Array.prototype.slice.call(parent.children).indexOf(target);
  console.log(chart.legend.legendItems[index]);

  Pie_onClickLegend_HighlightOnSlice(event.originalEvent, chart.legend.legendItems[index],chart);
})

因为我在"Pie_onClickLegend_HighlightOnSlice“中使用了"this.chart”,所以现在我还必须传递我想要使用的chartInstance:

代码语言:javascript
复制
function Pie_onClickLegend_HighlightOnSlice(event, legendItem, chartInstance) {
   if (chartInstance === undefined){
       chartInstance = this.chart;
   }

   [...]
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49048535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档