如何在jqcharts中捕获图形上单击值的数据参数



我是jqCharts的新手。下面是数据突出显示事件的代码。鼠标悬停时显示该数据。但是我需要点击图形上的值显示数据参数,而不是鼠标悬停。下面是代码

 <script lang="javascript" type="text/javascript">
    $(document).ready(function () {
        $('#jqChart').jqChart({
            title: "dataHighlighting Event",
            legend: { visible: false },
            animation: { duration: 1 },
            series: [
                {
                    type: 'column',
                    title: 'Column',
                    data: [['A', 46], ['B', 35], ['C', 68], ['D', 30],
                           ['E', 27], ['F', 85], ['D', 43], ['H', 29]],
                    cursor: 'pointer'
                },
                {
                    type: 'line',
                    title: 'Line',
                    data: [['A', 69], ['B', 57], ['C', 86], ['D', 23],
                           ['E', 70], ['F', 60], ['D', 88], ['H', 22]],
                    cursor: 'pointer'
                }
            ]
        });
        $('#jqChart').bind('dataHighlighting', function (e, data) {
            displayDataOptions(data);
        });
    });
    function displayDataOptions(data) {
        var list = $('#listBlock');
        list.children().remove();
        if (!data) {
            return;
        }
        list.append('<li>data.chart=' + data.chart + '</li>');
        list.append('<li>data.series=' + data.series + '</li>');
        list.append('<li>data.dataItem=[' + data.dataItem + ']</li>');
        list.append('<li>data.index=' + data.index + '</li>');
        list.append('<li>data.x=' + data.x + '</li>');
        list.append('<li>data.y=' + data.y + '</li>');
        list.append('<li>data.shape=' + data.shape + '</li>');
    }
</script>

我使用了onclick代替游标:'pointer'。但鼠标悬停时仍会出现数据参数。有没有人请提供帮助,如何捕获数据点击图形的值。

我一直是这样做的:

function updateChartPos(data){
    if (typeof data != 'undefined') {
      //SET YOUR GLOBAL VARIABLES
    }
  }
$('#jqchart').bind('dataHighlighting', function (e, data) {
            updateChartPos(data);
        });
$(document).on('click', 'canvas', function() {
        //Run your function with globals
});

这样做的原因是,如果在jqChart中使用标准数据点单击选项,用户必须直接单击数据点以注册事件。

使用datahighlight绑定和canvas单击监听器的组合,您允许用户单击图形上的任何地方,它将简单地使用他们悬停在上面的最后一个数据点(这为他们单击的误差范围提供了半径)。

你的代码会变成:

<script lang="javascript" type="text/javascript">
    $(document).ready(function () {
        $('#jqChart').jqChart({
            title: "dataHighlighting Event",
            legend: { visible: false },
            animation: { duration: 1 },
            series: [
                {
                    type: 'column',
                    title: 'Column',
                    data: [['A', 46], ['B', 35], ['C', 68], ['D', 30],
                           ['E', 27], ['F', 85], ['D', 43], ['H', 29]],
                    cursor: 'pointer'
                },
                {
                    type: 'line',
                    title: 'Line',
                    data: [['A', 69], ['B', 57], ['C', 86], ['D', 23],
                           ['E', 70], ['F', 60], ['D', 88], ['H', 22]],
                    cursor: 'pointer'
                }
            ]
        });
        $('#jqChart').bind('dataHighlighting', function (e, data) {
            updateChartPos(data);
        });
    });
    function updateChartPos(data) {
       window.currentInformation = data;
    }
    function displayDataOptions() {
        var data = window.currentInformation;
        var list = $('#listBlock');
        list.children().remove();
        if (!data) {
            return;
        }
        list.append('<li>data.chart=' + data.chart + '</li>');
        list.append('<li>data.series=' + data.series + '</li>');
        list.append('<li>data.dataItem=[' + data.dataItem + ']</li>');
        list.append('<li>data.index=' + data.index + '</li>');
        list.append('<li>data.x=' + data.x + '</li>');
        list.append('<li>data.y=' + data.y + '</li>');
        list.append('<li>data.shape=' + data.shape + '</li>');
    }
    $(document).on('click', 'canvas', function() {
       displayDataOptions();
    });
</script>

希望有帮助!jqChart是一个了不起的库,自从我购买了许可证以来,我就对它非常满意。如果你遇到其他问题,可以去他们的论坛看看——管理论坛的人对我提出的任何问题都非常好。

相关内容

  • 没有找到相关文章

最新更新