2011-10-05 102 views
9

这是一种使用jQuery从JSON数据填充表格的有效方法,还是有更好/更便宜的方法?最大行数将在100左右。我不想使用插件。使用jQuery填充JSON表格

JS:

$.ajax({ 
    url: 'public.json', 
    dataType: 'json', 
    success: function(data) { 
     var row = '<tr class="header">'; 
     for (var i in data.headers) { 
      row += '<th style=""><a href="#" class="sort"><span>' + data.headers[i] + '</span></a></th>'; 
     } 
     row += '</tr>' 
     $(row).appendTo('table.data'); 
     row = ''; 
     for (var i in data.rows) { 
      row += '<tr id="' + i + '">'; 
      row += '<td>' + data.rows[i].date + '</td>'; 
      row += '<td>' + data.rows[i].company + '</td>'; 
      row += '<td>' + data.rows[i].location + '</td>'; 
      ... 
      row += '</tr>'; 
     } 
     $(row).appendTo('table.data'); 
    }, 
}); 

JSON:

{ 
    "headers": { 
     "date": "Date", 
     "company": "Company", 
     "location": "Location", 
     ... 
    }, 
    "rows": [{ 
     "date": "09/18/2011", 
     "company": "Company name", 
     "location": "US", 
     ... 
    }, 
    ... 
} 

编辑:本质上讲,我试图找出是否结块所有行到一个字符串,把它变成一个jQuery对象然后将它附加到表中是一个好主意,假设可以在页面上多次执行刷新数据。

+0

有你看着jQuery的模板 - HTTP://api.jquery .com/category/plugins/templates /? –

+0

我认为建议使用处于测试阶段的插件并不适合生产原因。 – MacMac

+0

@Floyd“这些文档主题涉及jQuery模板**插件**”。业务执行表示他们不想使用一个。 – Bojangles

回答

7

而非for ... in语法和字符串建设,我会使用jQuery.each() function

像这样:

$.ajax({ 
    url: 'public.json', 
    dataType: 'json', 
    success: function(data) { 
     var $tr =$('<tr>').addClass('header'); 
     $.each(data.headers, function(i,header){ 
      $tr.append($('<th>').append($('a').addClass('sort').attr('href','#').append($('span').text(header)))); 
     }); 
     $tr.appendTo('table.data'); 
     $.each(data.rows,function(i,row){ 
      $('<tr>').attr('id',i). 
       append($('<td>').text(row.date)). 
       append($('<td>').text(row.company)). 
       append($('<td>').text(row.location)).appendTo('table.data'); 
     }); 
    } 
}); 
+1

使用$ .each代替for ... in有什么好处?我的印象是,每件每件都比......更昂贵。 – Alex

+0

你说得对。我不知道。你可以使用jQuery而不是字符串构建,但由于你的问题是关于昂贵的,我想你的代码很好...... http://jsperf.com/jquery-each-vs-for-loop/6 –