问题
I have played a bit with flot.js for plotting some data, but I have quite a few data series, so the user might want to hide some series. One of flot's examples shows how to toggle data series by using checkboxes. I would like to make clicking the legend's little color box or the label, to toggle the visibility of that series. Is that possible?
回答1:
Here is an example that uses checkboxes http://people.iola.dk/olau/flot/examples/turning-series.html
It could be modified to place a click event on each legendLabel, but you would only be able to show one legend at a time.
using something like this in the ready function
$('.legendLabel').click(
function(d){
var country = $(this).html().toLowerCase();
var data = [ ];
//alert( country );
data.push( datasets[country] );
if (data.length > 0)
$.plot($("#placeholder"), data, {
yaxis: { min: 0 },
xaxis: { tickDecimals: 0 }
});
}
);
回答2:
I am just getting back into programming and am not too familiar with ajax and the like, so I implemented my solution with javascript. You may be able to use to logic to do what you are seeking.
<html>
<head>
<script type="text/javascript">
<!--
function toggle_visibility(id) {
var e = document.getElementById(id);
if(e.style.display == 'block')
e.style.display = 'none';
else
e.style.display = 'block';
}
//-->
</script>
</head>
<body>
<fieldset>
<legend onclick="toggle_visibility('cm1');">Click Me</legend>
<div id="cm1">
<p>I toggle when the legend is clicked.</p>
<p>But I'm a recalcitrant text node and refuse to toggle.</p>
</div>
</fieldset>
<fieldset>
<legend onclick="toggle_visibility('cm2');">Click Me 2</legend>
<div id="cm2">
<p>Toggle me too when the legend is clicked.</p>
<p>But I'm a recalcitrant text node and refuse to toggle.</p>
</div>
</fieldset>
</body>
</html>
来源:https://stackoverflow.com/questions/1715319/toggle-data-series-by-clicking-legend-in-flot-chart