我在使用tableorter处理使用JSON数据中的JQuery创建的HTML表时遇到了一些麻烦。我创建了表格,当我点击它们时列标题突出显示但它没有对数据进行排序。创建表的JQuery是这样的:
function buildHtmlTable() {
var columns = addAllColumnHeaders(myList);
for (var i = 0 ; i < myList.length ; i++) {
var row$ = $('<tr/>');
for (var colIndex = 0 ; colIndex < columns.length ; colIndex++) {
var cellValue = myList[i][columns[colIndex]];
if (cellValue == null) { cellValue = ""; }
row$.append($('<td/>').html(cellValue));
}
$("#excelDataTable").append(row$);
}
}
function addAllColumnHeaders(myList) {
var columnSet = [];
var headerTr$ = $('<thead/>');
for (var i = 0 ; i < myList.length ; i++) {
var rowHash = myList[i];
for (var key in rowHash) {
if ($.inArray(key, columnSet) == -1){
columnSet.push(key);
headerTr$.append($('<th/>').html(key));
}
}
}
$("#excelDataTable").append(headerTr$);
return columnSet;
}
这构建了表,并且具有tablesorter所需的THEAD和TBODY标记。 然后我创建表并运行tablesorter函数,如下所示:
$(document).ready(function() {
buildHtmlTable();
$('#excelDataTable').tablesorter();
});
这是HTML:
<body>
<table id="excelDataTable" class="tablesorter">
</table>
</body>
当我点击表格标题时,它们会被一个蓝色框突出显示(就像他们知道被点击一样),但是他们没有排序。我认为它与动态创建表有关,因为tablesorter将使用硬编码的HTML表。但对于这个应用程序,我将获取JSON数据,并将需要根据我收到的内容构建表。表数据不会动态变化,只是以这种方式创建。任何帮助表示赞赏,如果需要,肯定会发回更多详细信息。提前谢谢!
答案 0 :(得分:2)
Mottie建议使用构建小部件为我工作。我将包含数据的文件格式从JSON更改为CSV。 Javascript是
$(function() {
$('#excelDataTable').tablesorter({
theme: 'blue',
widgets: ['zebra'],
widgetOptions: {
// *** build widget core ***
build_type : 'csv',
build_source : { url: 'data.txt', dataType: 'text' },
build_headers : {
widths : ['50%']
}
}
});
});
HTML就是
<body>
<div id="excelDataTable"></div>
</body>
另外,我确实需要做一些调整才能让chrome使用本地托管的文件,但这在IE中可以直接使用。