这是使用jQuery从JSON数据填充表的有效方法还是更好/更便宜的方式?最大行数约为100.我不想使用插件。
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 :(得分:7)
for
.. in
语法和字符串构建
像这样:
$.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');
});
}
});