2011-10-05 260 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 –