Highcharts - Show tooltip on points click instead mouseover

前端 未结 5 1758
无人共我
无人共我 2020-12-03 16:20

Is it possible to have tool tip on clicking of points instead of mouse move.

I have tried with showing values in java script alert as below

plotOpti         


        
5条回答
  •  抹茶落季
    2020-12-03 17:06

    As @PawelFus states, it's not officially supported but you can fudge this in by taking control of the visiblity of the tooltip.

    First on chart load, hide it:

           chart: {
                events: {
                    load: function(){
                        $('.highcharts-tooltip').hide();
                    }
                }
            },
    

    Disable sticky tracking, and on mouseout hide it, on click show it:

            plotOptions: {
                series: {
                    stickyTracking: false,
                    events: {
                        click: function() {
                            $('.highcharts-tooltip').show();
                        },
                        mouseOut: function() {
                            $('.highcharts-tooltip').hide();
                        }
                    }
                }
            },
    

    Here's a fiddle example.

    First attempt only worked in chrome, here's another:

    Disable the default tooltip:

    tooltip: {
        enabled: false
    },
    

    In the chart load event, create your own:

     chart: {
         events: {
            load: function(){
                this.myTooltip = new Highcharts.Tooltip(this, this.options.tooltip);                    
             }
         }
     },
    

    In the click and mouseout control it:

    plotOptions: {
        series: {
            stickyTracking: false,
            events: {
                click: function(evt) {
                    this.chart.myTooltip.refresh(evt.point, evt);
                },
                mouseOut: function() {
                    this.chart.myTooltip.hide();
                }                       
            }           
        }
    },
    

    I tested this in IE and Chrome, I won't install Firefox anymore.

    Update to code 9/7/2017 with new stack snippet:

    $(function () {
            $('#container').highcharts({
                xAxis: {
                    categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
                        'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
                },
                tooltip: {
                    valueSuffix: '°C',
                    enabled: false
                },
                chart: {
                    events: {
                        load: function(){
                            this.myTooltip = new Highcharts.Tooltip(this, this.options.tooltip);
                        }
                    }
                },
                plotOptions: {
                    series: {
                        stickyTracking: false,
                        events: {
                            click: function(evt) {
                            		this.chart.myTooltip.options.enabled = true;
                                this.chart.myTooltip.refresh(evt.point, evt);
                            },
                            mouseOut: function() {
                                this.chart.myTooltip.hide();
                                this.chart.myTooltip.options.enabled = false;
                            }                       
                        }
                        
                    }
                },
                series: [{
                    name: 'Tokyo',
                    data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6]
                }]
            });
        });
        
    
    
    
    
    

提交回复
热议问题