jqplot replot不工作

时间:2012-09-08 01:27:45

标签: javascript jquery jqplot

我正在尝试重新绘制我的jqplot图表。

$(document).ready(function(){

var dataseries = [[[10,20]]];

 var plot = $.jqplot('placeholder', dataseries ,
        { title:'<%= @question.text%>',
          axes:{
        yaxis:{min:-100, max:100, tickInterval:10, showTicks:true, label:"<%=@question.ylabel1%>"},
        xaxis:{min:-100, max:100, tickInterval:10, showTicks:true, label: "<%=@question.xlabel1%>"},
        y2axis:{min:-100, max:100, tickInterval:10, showTicks:true, label:"<%=@question.ylabel2%>", show:true},
        x2axis:{min:-100, max:100, tickInterval:10, showTicks:true, label:"<%=@question.xlabel2%>", show:true}},

          seriesDefaults:{showLine:false},
          series:<%=itemNames.html_safe%>,
          highlighter:{
        show:true,
        tooltipContentEditor:tooltipContentEditor}

        });
});

function tooltipContentEditor(str, seriesIndex, pointIndex, plot) {
    return plot.series[seriesIndex]["label"];
}


$("#placeholder").bind("jqplotClick", function(ev, gridpos, datapos, neighbor) {

    var x = Math.round(datapos.xaxis);
        var y = Math.round(datapos.yaxis);
      var item = $('li.item_button_selected').attr('id');
      if (item > 0){
        var requestObj = {
          question_id: "<%=@question.id%>",
          user_id: "1",     
        }
        requestObj["item_id"]=item
        requestObj["x"]=x
        requestObj["y"]=y
            plot.series[0].data = [[50,50]];
            plot.replot();

BLAH BLAH BLAH...

&LT;%= itemNames.html_safe%GT;通常看起来像这样:[{label:“Winona Ryder”},{label:“Paris Hilton”},{label:“Margaret Thatcher”},{label:“Snooki”},{label:“Natalie Portman”}, ]

页面加载时图表绘制正常;当我点击图表时,没有任何反应。我知道点击被抓住;如果我在那里发出警报,我会看到它。救命啊!

2 个答案:

答案 0 :(得分:4)

我建议您将事件处理程序放在$(document).ready()中 - 这是您发布的内容的必然结果。

我想回答的主要原因是要注意,因为我们正在使用jQuery,为什么不将它more directly“附加”到jQuery元素。为此,您将使用:

$('placeholder').jqplot(data, options);

现在情节变成了:

$('placeholder').data('jqplot');

所以你可以用:

重新绘制这个例子
$('placeholder').data('jqplot').series[0].data = [[50,50]];    
$('placeholder').data('jqplot').replot();

答案 1 :(得分:1)

好的,明白了。我需要将“plot”变量声明为$(document).ready(function()之外的全局变量......现在它正在工作!