1

I need to set the plotOptions -> events -> legendItemClick but manually on button click.

I though it would be something like chart.plotOptions.events.legendItemClick = function() {...}; but that obviously wasn't the solution.

I am not even sure if this is possible and I have to implement it on chart creation ONLY.

Any guidance on this is much appreciated. Thanks.

Setting in highcharts via creation:

plotOptions: {
    series: {
        events: {
            legendItemClick: function() {
                // Do something
            }
        }
    }
}

What I want to do... (Post creation)

var chart = $('#container').highcharts(); // Get the highcharts

// This doesn't work
chart.plotOptions.series.legendItemClick = function() { // Set the legendItemClick
    // Do something
}
4

1 に答える 1

4

私たちはそれをしますが、legendItemClickそれ自体の中で行います。状態が 2 つしかないため、これでうまくいきます。1 つ目は、デフォルトの凡例クリック アクションで構築されたチャートを許可する初期ロードです (すべてのシリーズが表示され、凡例のシリーズをクリックするとそのシリーズが非表示になり、そのシリーズを再度クリックすると表示されます)。もう 1 つの状態は、ユーザーが ddl で表示オプションを選択して、1 つのシリーズを除くすべてのシリーズを表示として削除し、ユーザーが凡例アイテムをクリックしてそのアイテムのみを表示できる場合です。次のようにします。

function(event) {
    var e = document.getElementById('" & gModeElementId & "');
    var strGraphMode = e.options[e.selectedIndex].value;
    if (strGraphMode == 'single') {
        var seriesIndex = this.index;
        var serie = this.chart.series;
        for (i = 0; i < serie.length; i++) {
            if (serie[i].index == seriesIndex) {
                serie[i].show();
                var ctitle = this.chart.yAxis[0].axisTitle;
                ctitle.attr({text: serie[i].name});
            } else {
            serie[i].hide();
            }
        }
        return false;
    }
}

legendItemClickまた、既存の関数を実際に変更する方法も見つかりませんでした。

于 2013-11-12T20:57:59.193 に答える