シリーズポイントをクリックしてthis.category
を取得する代わりに、シリーズ十字線全体をクリックして列カテゴリを取得できるようにしたいと思います。
上記の例では、強調表示された列のポイントをクリックするだけで、カテゴリ( "janvier 16")を取得できます。 そこで、十字線にクリックイベントを添付して、カテゴリを取得したいと思います(これは、2つのポイントで同じです)。
全て。
これはバグではないと思います。 十字線にはイベントがありませんが、Highcharts、スニペットを拡張することでイベントを追加できます。
(function(H) {
H.wrap(H.Axis.prototype, 'drawCrosshair', function(proceed) {
var axis = this;
wasRendered = !!this.cross; // on init, cross is not defined
proceed.apply(this, Array.prototype.slice.call(arguments, 1));
// Add event just once:
if (!wasRendered && this.cross) {
this.cross.on('click', function(e) {
var point = axis.chart.hoverPoint;
console.log(
'Point:',
point,
'\nCategory',
point.category
)
});
}
});
})(Highcharts);
ライブデモ: http :
ありがとう@pawelfus ! したがって、この新しいスニペットを使用して、Highchart構成オブジェクトで呼び出すことができますか、それともクリックイベントで新しいアクションを追加するたびに呼び出す必要がありますか(使用しているチャートによって異なります)?
このスニペットは、Highchartsガイドラインの拡張に従っていexporting.js
やその他のモジュール/プラグインとほぼ同じように機能します)。 必要に応じて、次のようなパラメータを追加できます。
xAxis: {
clickOnCrosshair: true
...
}
そして、上記のプラグインでそれをチェックしてください:
...
// Add event just once:
if (!wasRendered && this.cross && this.options.clickOnCrosshair) {
...
このように、 xAxis.clickOnCrosshair
フラグがtrueに設定されているチャートのみがこの機能を取得します。
いいですね、ありがとう! しかし、私はまた、このようなことをすることが可能かどうか知りたいです:
xAxis: {
clickOnCrosshair: function () {
console.log(this.category);
//some actions...
}
...
}
そのように、チャート構成オブジェクト内に直接(チャートシリーズポイントをクリックしたときのイベント):
series: {
cursor: 'pointer',
point: {
events: {
click: function () {
console.log(this.category);
//some actions...
}
}
}
}
ああ、そうだ、誤解してすみません! もちろん、それも可能です: http : this
は軸を指していることに注意してください。
問題ありません、それはとても素晴らしいです! こんなにカスタマイズできるとは思っていませんでした! ちなみに、ありがとうございました!
最近、素晴らしい@pawelfusソリューションに関する記事を書きました! https://maximelafarie.com/click-event-on-highcharts-series-crosshair
Black Labelのカスタムイベントプラグインは、これらのユースケースに非常に適したソリューションであると考えているため、当面の間、この拡張機能をHighchartsコアに追加することはありません。
結論は:
十字線のイベントを追加することに興味がある人は、 BlackLabelの
何らかの理由で、これはどのブラウザでも機能しません。 このスレッドのフィドルでさえ、コンソールに何も記録しておらず、クリックイベント関数もまったく起動していません。 チャートの要素を調べると、onclickイベントにバインドされている関数さえ見つかりません。 何か変わったことはありますか? 私は何かが足りないのですか?
@pigeontoe Highchartsがv6にアップグレードされたため、このソリューションは機能しなくhighcharts.js
をv5.xxにダウングレードすると、期待どおりに機能します( Highcharts v5.0.14と同じフィドル)。
v6で動作するようにデモを更新しました: http : pointerEvents: 'auto'
を追加)。
返信ありがとうございます。 昨日更新を投稿するべきだった。 私も同じ結論に達しました。 Highchartsが「pointer-events:none;」のインラインスタイルを追加していることに気づきました。 自動に変更すると正常に動作します。 ありがとう!
最も参考になるコメント
最近、素晴らしい@pawelfusソリューションに関する記事を書きました! https://maximelafarie.com/click-event-on-highcharts-series-crosshair