【发布时间】:2009-12-21 23:08:51
【问题描述】:
我有一个 javascript 101 问题。
我正在使用一个不错的图形库 (flot),并在单个页面上绘制多个图形。每个图表都是一个 div,带有一个属性集,告诉图表从哪里获取数据。例如,HTML 可能是:
<div class="line-chart" data-src='/revenue.js'></div>
<div class="scatter-chart" data-src='/users/byweek.js'></div>
<div class="scatter-chart2" data-src='/apps/byweek.js'></div>
我在这里有两种类型的图表,散点图和折线图。理想情况下,我能够遍历类,并简单地获取适当的数据。但是,我对回调的上下文感到困惑,并且不知道我实际上在哪个 div 中,所以我在我的 JS 中做这个 hack:
$(document).ready(function() {
$('.line-chart').each(function() {
$.getJSON($(this).attr('data-src'),
function(data) {
$.plot($('.line-chart'), [data], { xaxis: { mode: "time" }});
});
});
$('.scatter-chart').each(function() {
$.getJSON($(this).attr('data-src'),
function(data) {
$.plot($('.scatter-chart'), [data], { xaxis: { mode: "time" },
lines: { show: false },
points: { show: true }
});
});
});
$('.scatter-chart2').each(function() {
$.getJSON($(this).attr('data-src'),
function(data) {
$.plot($('.scatter-chart2'), [data], { xaxis: { mode: "time" },
lines: { show: false },
points: { show: true }
});
});
});
});
我确定我可以清理它,但我只是不清楚如何去做。主要问题是 $.plot 需要应用于调用 getJSON 的特定图表,而不是它找到的第一个图表。
【问题讨论】:
标签: javascript jquery json dry