我试图让flot工具提示出现,但什么也没发生。有谁能告诉我我做错了什么,拜托?也许它不能识别我的观点,它们出现在图表上(y轴上的人数,x轴上的年份)。
$.post('php/myprogram.php',
function(output){
var obj = jQuery.parseJSON( output );
var data = [];
var coordinate = [];
for (var i = 0; i< obj.length-1; i++) {
coordinate.push(obj[i][0]);
coordinate.push(obj[i][1]);
data.push(coordinate);
coordinate = [];
}
var options = {
xaxis: {
axisLabel: 'YEAR',
axisLabelUseCanvas: true,
axisLabelFontSizePixels: 15,
axisLabelFontFamily: 'Arial',
tickDecimals: 0
},
yaxis: {
axisLabel: '',
axisLabelUseCanvas: true,
axisLabelFontSizePixels: 15,
axisLabelFontFamily: 'Arial'
},
series: {
lines: {
show: true,
color: '#ffa500'
},
points: {
show: true
}
},
grid: {
hoverable: true
}
};
$.plot($("#byYear"),
[data],
options
);
function showTooltip(x, y, contents) {
$("<div id='tooltip'>" + contents + "</div>").css({
position: "absolute",
display: "none",
top: y + 5,
left: x + 5,
border: "1px solid #fdd",
padding: "2px",
"background-color": "#fff",
opacity: 0.80
}).appendTo("body").fadeIn(200);
}
$("#byYear").bind("plothover", function (event, pos, item) {
var str = "(" + pos.x.toFixed(2) + ", " + pos.y.toFixed(2) + ")";
//$("#hoverdata").text(str);
if (item) {
if (previousPoint != item.dataIndex) {
previousPoint = item.dataIndex;
$("#tooltip").remove();
var x = item.datapoint[0].toFixed(2);
var y = item.datapoint[1].toFixed(2);
showTooltip(item.pageX, item.pageY, str);
}
} else {
$("#tooltip").remove();
previousPoint = null;
}
}); //end bind
});
答案 0 :(得分:0)
在此fiddle中工作得很好。
但是您在showTooltip()
回调中定义了bind()
和$.post()
函数。这意味着在多个ajax调用之后,您多次调用plothover
函数。尝试将这两个函数移出$.post()
回调。
答案 1 :(得分:0)
您可以使用“flot.tooltip”插件,而不是自己处理plothover
个事件。
答案 2 :(得分:0)
@Raidri部分正确 - 我的工具提示需要在我的代码之外。但我不得不采取不同的方式:
html :(我只包括基本的flot代码)
<div id="tooltip"></div>
<div id="byYear"></div>
的CSS:
#byYear {
width: 50%;
height: 100%;
}
#tooltip {
position: absolute;
display: none;
border: 1px solid black;
padding: 2px 5px;
background-color: white;
opacity: 0.80;
z-index: 5;
}
jquery的:
$.post('php/myprogram.php',
function(output){
var obj = jQuery.parseJSON( output );
var data = [];
var coordinate = [];
for (var i = 0; i< obj.length-1; i++) {
coordinate.push(obj[i][0]);
coordinate.push(obj[i][1]);
data.push(coordinate);
coordinate = [];
}
var options = {
xaxis: {
axisLabel: 'YEAR',
axisLabelUseCanvas: true,
axisLabelFontSizePixels: 15,
axisLabelFontFamily: 'Arial',
tickDecimals: 0
},
yaxis: {
axisLabel: '',
axisLabelUseCanvas: true,
axisLabelFontSizePixels: 15,
axisLabelFontFamily: 'Arial'
},
series: {
lines: {
show: true,
color: '#ffa500'
},
points: {
show: true
}
},
grid: {
hoverable: true
}
};
$("#byYear").bind("plothover", function (event, pos, item) {
if (item) {
var x = item.datapoint[0].toFixed(0),
y = item.datapoint[1].toFixed(0);
$("#tooltip").html(y + " instances")
.css({top: item.pageY+5, left: item.pageX+5})
.fadeIn(200);
} else {
$("#tooltip").hide();
}
});
$.plot($("#byYear"),
[data],
options
);
});