代码之家  ›  专栏  ›  技术社区  ›  user1912383

ChartJS区分图表区、数据集和图例之间的单击

  •  0
  • user1912383  · 技术社区  · 7 年前

    我在和一个 Line 查特和I a有以下要求:

    2-检测单击顶部的图例矩形以隐藏/显示数据集(当前默认行为)

    options.onClick 但它似乎覆盖了传说中的点击。 也试过了 getElementAtEvent getDatasetAtEvent 总是返回空数组。如果我用 options.legend.onClick 我失去了默认的隐藏/显示行为,需要以编程方式完成它。

    我想知道有没有更好的方法来达到上面的要求。谢谢

    1 回复  |  直到 7 年前
        1
  •  0
  •   Kunal Khivensara    7 年前

    您可以使用getElementsAtEvent属性。这只在单击图表区域时提供值,如果在图例上单击元素,则元素为空。如果在图表区域中单击它,则它保存可以从中获取单击的xAxis和图例值的属性。

    document.getElementById("yourChartCanvasId").addEventListener("click", function (e) {
        var element = instance.getElementsAtEvent(e)[0];
    
        if (element) {    
          //Handle click on chart area        
        }
        else {    
          //Handle click on legend area        
        }        
    });
    

    另外,如果不想在legend click上执行任何操作,请保持默认的Chart.js行为,然后不要包含else块。