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

tes*_*123 2 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;
                                     }
                            },
                         };  
Run Code Online (Sandbox Code Playgroud)

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

之前

之前

后

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

我看了一下这里的建议:flot graph,使用图例打开/关闭系列

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

请告诉我.

谢谢!

Mar*_*ark 6

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

像这样的东西:

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

 // plot call etc...
}  
Run Code Online (Sandbox Code Playgroud)

工作小提琴在这里.