我正在使用jQuery(1.9.1)和jQuery Mobile(1.3.0)。我在JQM中遇到了Reflow表的问题。当我在AJAX中从脚本中获取我的JSON数据以向表中添加更多行时,在触发刷新并在表上创建后,不会生成重排表标题。这是我的代码:
'<table data-role="table" id="itemTable" data-mode="reflow" class="ui-responsive table-stroke" style="display:table;">' .
'<thead>' .
'<tr>' .
'<th data-priority="1">Location</th>' .
'<th>Name</th>' .
'<th data-priority="3">Barcode</th>' .
'<th data-priority="4">Needed</th>' .
'<th data-priority="5">Scanned</th>' .
'</tr>' .
'</thead>' .
'<tbody>' .
$tableData .
'</tbody>' .
'</table>' .
$('.getOrder, .getStoreOrder').on('vclick', function(e) {
e.preventDefault();
var sel = this;
var theLink = $(this).attr('href');
if (activeOrder === true) {
return false;
}
$.ajax({
url: 'ajax.php',
data: {
pa: ($(sel).hasClass('getStoreOrder') ? 'store' : '') + 'order'
},
dataType: 'json',
beforeSend: function() {
$.mobile.showPageLoadingMsg();
$('#itemTable tbody').html('');
$('#leftPanel ul li').not(':first-child').remove();
},
success: function(data) {
testVar = data;
var i;
for (i=0; i <= data.length -1; i++) {
$('#itemTable tbody').append( '' +
'<tr id="item' + (i+1) + '">' +
'<td><span>' + data[i].Location + '</span></td>' +
'<td><a onclick="showImageOverlay(\'' + data[i].Image + '\');">' + data[i].Name + '</a></td>' +
'<td>' + data[i].Barcode + '</td>' +
'<td>' + data[i].Qty + '</td>' +
'<td>0</td>' +
'</tr>' +
'');
$('#leftPanel ul').append( '' +
'<li>' +
'<a href="#item' + (i+1) + '" class="itemLink" onclick="changeItem(\'item' + (i+1) + '\')">' +
'Item ' + (i+1) +
'</a>' +
'</li>' +
'');
}
$('#itemTable').trigger('refresh');
$('#itemTable').trigger('create');
$('#leftPanel #leftUl').listview('refresh');
},
complete: function() {
$('#rightPanel', '.ui-page-active').panel('close');
$.mobile.hidePageLoadingMsg();
//pageChange(theLink);
}
});
});
AJAX 确实成功并将我的行添加到表中我想要的方式。我的问题是如何触发JQM添加回流列名称。
我知道我可以在我的行附加<b class="ui-table-cell-label">Column Name</b>
添加列名,但我希望它动态完成,所以当我更改HTML时,我不必更改jQuery。
谢谢。
答案 0 :(得分:0)
在我看来,最好这样做:$('#tableContainer').load('revisedTable.php?json=yourJsonString');
这样你就可以在php而不是javascript中进行表格布局。
答案 1 :(得分:0)
想出来。事实证明,jQuery Mobile版本1.3.0没有实现正确的.table('refresh')
方法。我通过升级到jQuery Mobile版本1.3.1解决了这个问题,该版本具有我需要的正确方法。