jqplot如何使链接到另一个页面的条形图可点击

时间:2013-10-21 06:37:55

标签: javascript jquery jqplot

我尝试使用jqplot来创建可以单击的条形图,然后将用户重定向到另一个页面以及标签值作为url参数,但是没有运气来建立链接。这就是我所做的。

  $(document).ready(function() {
      $.jqplot.config.enablePlugins = true;

         var ticks = [ 'SCAN', 'SGON', 'TERM', 'TRAN'];
         var arrBranchId = ['08270K08001', '08298K08003', '12026K12003','14123K14003'];
         var plot1 = $.jqplot('chart1',[[0,0,0,1],[2,4,2,5],[0,0,0,1],[0,5,0,1]], {           
         seriesDefaults: {
                 renderer: $.jqplot.BarRenderer,
                 rendererOptions: { fillToZero: true },
                 pointLabels: { show: true }
             },

             series: [{label:'08270K08001'},{label:'08298K08003'},{label:'12026K12003'},{label:'14123K14003'}],

             legend: {
                 show: true,
                 placement: 'ne'
             },
             highlighter: {
             show: false,

             },
              cursor: {
                show: true
              },
             axes: {

                 xaxis: {
                     renderer: $.jqplot.CategoryAxisRenderer,
                     ticks: ticks
                 },

                 yaxis: {
                     renderer: $.jqplot.CategoryAxisRenderer,
                     pad: 1.05,
                     tickOptions: { formatString: '%d' }
                 }
             }
         });
     });
  • 我应该如何建立一个指向栏的链接,例如localhost / webCharts / branch.aspx?branchId = 08270K08001

还尝试了这个How to catch the click event from the axis ticks jqplot, highcharts,flot,将功能改为

$('.jqplot-xaxis-tick').each(function(){
            var label = $(this),
                value = label.text();
            if(categoryLinks[value]) {
                label.click(function(){

                    alert('could link to another page: ' + categoryLinks[value]);
                });
            }
        });

但是用户点击时会发生这种情况。我错过了什么吗? 提前致谢

5 个答案:

答案 0 :(得分:2)

我找到了一种方法,可以使用window.location使条形图可点击并链接到另一个页面,如下所示

$('#chart1').bind('jqplotDataClick',function(ev, seriesIndex, pointIndex, data){
                window.location = 'branchDetails.aspx?appId='+ticks[**pointIndex**]+"&branchId="+arrBranchId[**seriesIndex**];          
        });

注意:数组ticks []和arrBranchId []已在$(document).ready(function(){.....}中定义。所以我只是通过 pointIndex 和 seriesIndex 。非常感谢大家

答案 1 :(得分:2)

我不确定您是否还在寻找解决方案,但我在研究同样的问题时发现了您的问题。我只是弄清楚如何让它发挥作用。根据您的代码,您应该添加如下函数:

$('#Chart1').bind('jqplotDataClick', function (ev, seriesIndex, pointIndex, data) {
    window.parent.location.href = 'YOURURL.aspx?id=' + arrBranchId[pointIndex];
});

希望这会对你或其他人有所帮助。

答案 2 :(得分:1)

删除每个循环并使用jqplot绑定方法jqplotDataClick:

// replace chart1 with your div ID
$('#chart1').bind('jqplotDataClick',
function (ev, seriesIndex, pointIndex, data) {
    // data contains the data point value, play with it
    // NOTE it may contain an array and not a string
    alert(data);
});

在上面的例子中我使用alert(数据)你可以使用数据值 做任何其他事情,即将用户重定向到包含该值的URL 作为参数传递

<强>演示 http://jsfiddle.net/fordlover49/JWhmQ/

答案 3 :(得分:0)

您可以使用此代码段来获取点击事件!

// Bind a listener to the "jqplotDataClick" event.  Here, simply change
  // the text of the info3 element to show what series and ponit were
  // clicked along with the data for that point.
  $('#chart3').bind('jqplotDataClick',
    function (ev, seriesIndex, pointIndex, data) {alert('clicked')
      $('#info3').html('series: '+seriesIndex+', point: '+pointIndex+', data: '+data);
    }
  );

查看此演示JSFIDDLE

答案 4 :(得分:0)

我发现了一种更简单的方法.. 保持简单:

   $('#chart3').bind('jqplotDataClick', 
            function (ev, seriesIndex, pointIndex, data) {
                /* To open in a NEW window use: */
                /* window.open(data[2]); */
                /* To open in the same window use: */
                window.location.href='ErrorView3.php';
            }
  );