9

データベース内のデータに従ってデータをレンダリングするハイチャートがあります。タイプ「バー」を使用しています。ユーザーがバーをクリックすると、特定のページや別のWebサイトなどにリダイレクトされるようにしたいと思います。グーグルで検索しましたが、答えが得られませんでした。これが私が使用しているコードです。

$(function () {
var chart;
$(document).ready(function() {
    chart = new Highcharts.Chart({
        chart: {
            renderTo: 'container',
            type: 'bar'
        },
        title: {
            text: 'Historic World Population by Region'
        },
        subtitle: {
            text: 'Source: Wikipedia.org'
        },
        xAxis: {
            categories: ['Africa', 'America', 'Asia', 'Europe', 'Oceania'],
            title: {
                text: null
            }
        },
        yAxis: {
            min: 0,
            title: {
                text: 'Population (millions)',
                align: 'high'
            },
            labels: {
                overflow: 'justify'
            }
        },
        tooltip: {
            formatter: function() {
                return ''+
                    this.series.name +': '+ this.y +' millions';
            }
        },
        plotOptions: {
            bar: {
                dataLabels: {
                    enabled: true
                }
            }
        },
        legend: {
            layout: 'vertical',
            align: 'right',
            verticalAlign: 'top',
            x: -100,
            y: 100,
            floating: true,
            borderWidth: 1,
            backgroundColor: '#FFFFFF',
            shadow: true
        },
        credits: {
            enabled: false
        },
        series: [{
            type: 'bar',
                    point: {
                      events: {
                        click: function(e) {

                           this.slice();
var clicked = this;
setTimeout(function(){
location.href = clicked.config[2];
                           }, 500)
                           e.preventDefault();
                        }
                     }
                   },
data: [['Com',107,'http://www.google.com']]
        }]
    });
});

});
4

2 に答える 2

12

これを行う方法に関するドキュメントのURLは次のとおりです。http://api.highcharts.com/highcharts#plotOptions.series.point.events.click

ここに良いサンプルがあります:http://jsfiddle.net/gh/get/jquery/1.7.2/highslide-software/highcharts.com/tree/master/samples/highcharts/plotoptions/series-point-events-click- url /

更新したいコードの部分はここにあります:

plotOptions: {
        bar: {
            dataLabels: {
                enabled: true
            }
        },
        series: {
            point: {
                events: {
                    click: function(){
                       // do whatever here
                    }
                }
            }
        }

    }
于 2012-10-04T07:19:22.273 に答える
0

Uncaught TypeError: Object #<Object> has no method 'slice'

これは、次の行で生成されるエラーです。

this.slice();

それを除く。

デモ

上記のデモでは、イベントをバインドするシリーズに対してのみクリックがトリガーされます。すべてのシリーズにバインドする場合は、@Jamiecの提案を使用してください。

于 2012-10-04T17:48:58.460 に答える