循环javascript get请求

循环javascript get请求,javascript,jquery,json,dry,Javascript,Jquery,Json,Dry,我有一个问题 我正在使用一个漂亮的图形库(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-ch

我有一个问题

我正在使用一个漂亮的图形库(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>

我相信我能把这件事弄清楚,我只是不知道该怎么做。主要问题是,$.plot需要应用于调用getJSON的特定图表,而不是它找到的第一个图表。

如果您不确定回调的上下文,那么无论如何不使用该上下文可能会更干净。您可以使用
each()
循环的上下文:

$('.line-chart').each(function() {
  var self = $(this);
  $.getJSON(self.attr('data-src'),
    function(data) {
        $.plot(self, [data], { xaxis: { mode: "time" }});
    });
});

非常干净。

不错,就像我担心的那样简单。这正是我想要的。谢谢
$('.line-chart').each(function() {
  var self = $(this);
  $.getJSON(self.attr('data-src'),
    function(data) {
        $.plot(self, [data], { xaxis: { mode: "time" }});
    });
});
$(function() {
      function plotChart(selector, options) {
        $(selector).each(function() {
          var $this = $(this);
          $.getJSON($this.attr('data-src'), function(data) {
            $.plot($this, [data], options);
          });
        });
      }

      plotChart('.line-chart', { xaxis: { mode: "time" });
          plotChart('.scatter-chart', {
              xaxis: {
                mode: "time"
              },
              lines: {
                show: false
              },
              points: {
                show: true
              });

            plotChart('.scatter-chart2', {
                xaxis: {
                  mode: "time"
                },
                lines: {
                  show: false
                },
                points: {
                  show: true
                });

            });