Highcharts - 如何在mouseOver和mouseOut上显示/隐藏多个数据标签

时间:2017-01-25 06:37:14

标签: javascript jquery highcharts mouseover mouseout

我想只在鼠标悬停时显示数据标签。 下面是我试过的代码,但它在mouseOver上工作正常但是只能在mouseOut上隐藏一个.. jsfiddle在这里 http://jsfiddle.net/wbmu4sat/5/

$(function () {
    Highcharts.chart('container', {
        xAxis: {
            categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
            crosshair: {
                color: '#eaeaea'
            }
        },
        series: [{
            data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4],
        }, {
            data: [216.4, 194.1, 95.6, 54.4, 29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5],
        }],
                tooltip: {
            shared: true
        },
        plotOptions: {
            series: {
              dataLabels: {
                  enabled: true,
                  align: 'center',
                  style: {fontSize: '0px' },
                states: {
                  hover: {
                  enabled: true,
                  }
                }
              },
              marker: {
                radius: 10,
                symbol: 'circle',
                states: {
                  hover: {
                    radius: 20,
                    symbol: 'circle'
                  }
                }
              },
                point: {
                    events: {
                        mouseOut: function (e) {
                            this.dataLabel.css({
                                fontSize: "0px",
                            });
                        },
                        mouseOver: function (e) {
                            this.dataLabel.css({
                                fontSize: "10px",
                            });
                        }
                    }
                }
           }
        }
    });
});

请在http://jsfiddle.net/wbmu4sat/5/

找到js小提琴

1 个答案:

答案 0 :(得分:3)

您可以使用point.update()启用/禁用点的数据标签。在鼠标悬停时,您可以遍历点并禁用所有这些点的数据标签,但悬停点除外。

        events: {
      mouseOut: function() {
        this.chart.hoverPoints.forEach(p => {
          p.update({
            dataLabels: {
              enabled: false
            }
          }, false, false);
        });
      }
    },
    point: {
      events: {
        mouseOver: function(e) {
          this.series.data.forEach(p => {
            p.update({
              dataLabels: {
                enabled: false
              }
            }, false, false)
          });

          this.update({
            dataLabels: {
              enabled: true
            }
          });
        }
      }
    }

示例:http://jsfiddle.net/vtgbmas7/