I'm using c3.js for graphing and everything is working as expected.
However, I'd like to access the API from other scripts, that is call resize etc...
if I use:
var chart = c3.generate({ ... });
I can then access the chart object and it's API like:
chart.resize();
However, if I do not have access to the chart object as it's another script I can get the HTML DOM element (using jQuery):
$(".c3").each(function(i, chart) { 
    // Here I want to do something like chart.resize();
    // But chart is just the DOM reference, not the chart variable
    // I need something like c3.get(chart)????
});
But chart in the loop is a DOM object, not the var chart made from c3.generate.
Any ideas how I can get this object? The documentation isn't quite finished ;)
As you're already using jQuery, here's a solution using jQuery data:
Save a reference to the chart, keyed on its DOM element:
var selector = '#some-selector';
var chart = c3.generate({
  bindTo: selector,
  // ...
});
$(selector).data('c3-chart', chart);
To access the chart for each .c3 element:
$('.c3').each(function() {
  var chart = $(this).data('c3-chart'); 
});
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With