Highcharts: シリーズ全体の十字線でイベントをクリックします

作成日 2016年11月23日  ·  13コメント  ·  ソース: highcharts/highcharts

期待される動作

シリーズポイントをクリックしてthis.categoryを取得する代わりに、シリーズ十字線全体をクリックして列カテゴリを取得できるようにしたいと思います。

実際の動作

capture d ecran 2016-11-22 a 19 34 56

上記の例では、強調表示された列のポイントをクリックするだけで、カテゴリ( "janvier 16")を取得できます。 そこで、十字線にクリックイベントを添付して、カテゴリを取得したいと思います(これは、2つのポイントで同じです)。

影響を受けるブラウザ

全て。

Enhancement

最も参考になるコメント

最近、素晴らしい@pawelfusソリューションに関する記事を書きました! https://maximelafarie.com/click-event-on-highcharts-series-crosshair

全てのコメント13件

これはバグではないと思います。 十字線にはイベントがありませんが、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...
      }
    }
  }
}

ああ、そうだ、誤解してすみません! もちろん、それも可能です: httpthisは軸を指していることに注意してください。

問題ありません、それはとても素晴らしいです! こんなにカスタマイズできるとは思っていませんでした! ちなみに、ありがとうございました!

custom-events.jsプラグインで利用できるようになりました。

例:

最近、素晴らしい@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で動作するようにデモを更新しました: httppointerEvents: 'auto'を追加)。

返信ありがとうございます。 昨日更新を投稿するべきだった。 私も同じ結論に達しました。 Highchartsが「pointer-events:none;」のインラインスタイルを追加していることに気づきました。 自動に変更すると正常に動作します。 ありがとう!

このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

madreason picture madreason  ·  3コメント

vivekk123 picture vivekk123  ·  3コメント

balupton picture balupton  ·  3コメント

sebastianbochan picture sebastianbochan  ·  3コメント

bbonczek picture bbonczek  ·  3コメント