У меня вопрос на 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:
$(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 был назван, а не к первой, которую он находит.