我正在尝试重新绘制我的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”}, ]
页面加载时图表绘制正常;当我点击图表时,没有任何反应。我知道点击被抓住;如果我在那里发出警报,我会看到它。救命啊!
答案 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()之外的全局变量......现在它正在工作!