在取消选中时保留flot legend标签复选框

时间:2012-04-05 00:40:53

标签: javascript jquery graph flot

我有一个场景,我想根据复选框选择来切换系列。我已在图例选项中使用 labelFormatting 将复选框添加到图例中,如:

     var otherOptions = {
                           legend: {
                                     container: legend,
                                     labelFormatter: function (label, series) {
                                        var cb = '<input type="checkbox" name="' + label + '" checked="checked" id="id' + label + '"> ' + label;
                                        return cb;
                                     }
                            },
                         };  

我添加了图例的点击事件,以便我可以根据选中的项目操作系列。一切正常,除非我在图例中取消选中标签,在重新绘制时它也会从图例中删除该系列线。所以对于例如,下面是前后图像:

之前

Before

After

请注意,在图像“USA”复选框缺失之后。 有什么方法我仍然可以在图例中显示未经检查的“USA”复选框吗?

我在这里查看了这个建议:flot graph, use legend to turn on/off series

但唯一的问题是我不想将图例和复选框图例分开。关于给定链接的问题是在1年前回答的,所以我想我会抓住机会再次提出问题,以防有人知道这样做的方法。

请告诉我。

谢谢!

1 个答案:

答案 0 :(得分:6)

如果取消选中该复选框,则不要一起删除所有系列,而是添加空数据。

这样的事情:

function plotByChoice(doAll)
{
  $('#legend .legendCB').each(
   function(){
     if (this.checked)
     {         
       data.push(datasets[someLabel]);
     }
     else
     {
       data.push({label: someLabel, data: []})
     }        
   }
 );

 // plot call etc...
}  

工作小提琴是here