1

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...

<%=itemNames.html_safe%> は通常、次のようになります: [{label:"Winona Ryder"},{label:"Paris Hilton"},{label:"Margaret Thatcher"},{label:"Snooki"},{ label:「ナタリー・ポートマン」},]

ページが読み込まれると、グラフはうまく描画されます。チャートをクリックしても何も起こりません。クリックがキャッチされていることはわかっています。そこにアラートを入れると、それが表示されます。ヘルプ!

4

2 に答える 2

4

イベントハンドラー$(document).ready()も同様に配置することをお勧めします-あなたが投稿したものへの当然の結果です。

私が返信したかった主な理由は、jQuery を使用しているため、jQuery 要素に直接「アタッチ」しない理由を指摘することでした。これを行うには、次を使用します。

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

プロットは次のようになります。

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

したがって、この例を次のように再プロットできます。

$('placeholder').data('jqplot').series[0].data = [[50,50]];    
$('placeholder').data('jqplot').replot();
于 2013-01-28T11:22:43.840 に答える
1

わかりました。「plot」変数を $(document).ready(function() の外でグローバル変数として宣言する必要がありました...今では機能しています!

于 2012-09-08T01:44:13.607 に答える