我正在使用 jQuery tablesorter 插件从 csv 文件动态生成表格,并且该部分工作正常。但是,每当我尝试通过单击表标题对表进行排序时,Firebug 都会在控制台中报告此问题:
parsers is undefined
return parsers[i].type;\n
最初,我认为这个问题是由于文档加载后表格未准备好引起的,因此我通过在从 csv 文件渲染表格后手动调用 tablesorter() 来修复该问题。但这并没有解决问题。
另外,在表格的最后,表格被绘制成乱码,有一些gray areas在最后。我想这与上面的错误有关。
有问题的代码是这样的:
<html>
<head>
<link rel="stylesheet" href="blue/style.css" type="text/css" />
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="jquery.tablesorter.js"></script>
<script type="text/javascript" src="jquery.csv.js"></script>
<script type="text/javascript" id="js">
function sortThis() {
$("#myTable").tablesorter({
// sortList:[[0,0],[2,1]]
});
};
</script>
<title>huh!?</title>
</head>
<body>
<table id="myTable" class="tablesorter" cellspacing="1" cellpadding="0" border="0">
<thead>
<tr>
<th>name</th>
<th>type</th>
<th>Date</th>
</tr>
</thead>
<tbody>
<script type="text/javascript">
$.get('myfile.csv', function(data) {
myfile = jQuery.csv()(data)
for (var x = 0; x < myfile.length; x++) {
str = "<tr>";
for (var y = 0; y < myfile[x].length; y++) {
str += "<td>" + myfile[x][y] + "</td>";
}
str += "</tr>";
$('#myTable').append(str);
}
});
sortThis();
</script>
</tbody>
</table>
</body>
</html>
预先感谢您的帮助。
最佳答案
我遇到了类似的问题,但抛出错误是因为表是空的(除了标题之外)。我认为您会因为同样的原因而收到错误。
我认为问题在于表排序器不知道表数据,因为您在使用 $.get() 方法加载页面后对其进行修改。要提醒表排序器表数据的更改,请在调用 sortThis() 之前使用此调用。
$('#myTable').trigger("update");
这应该可以解决你的问题。
作为 tablesorter 调用的一部分,您还可以使用以下语法来避免此错误:
$('#myTable:has(tbody tr)').tablesorter({
...
});
我在 jQuery Google Group posting 上找到了帮助.
关于jQuery tablesorter 排序不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1251536/