jQuery tablesorter排序不起作用

4 ajax jquery jquery-plugins

我正在使用jQuery tablesorter插件从csv文件动态生成表,并且该部分工作正常.但是,每当我尝试通过单击表头来对表进行排序时,firebug会在控制台中报告此问题:

parsers is undefined
return parsers[i].type;\n
Run Code Online (Sandbox Code Playgroud)

最初我虽然这个问题是由于文件加载后表没有准备好引起的,所以我通过在从csv文件呈现我的表后手动调用tablesorter()来解决这个问题.但这并没有解决问题.

此外,在表的最后,表格被绘制为乱码,末尾有一些灰色区域.我想这与上面的错误有关.

有问题的代码是这样的:

<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>
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助.

Jos*_*lfe 12

我遇到了类似的问题,但错误被抛出,因为表是空的(除了标题).我认为你出于同样的原因得到错误.

我相信问题是tableorter不知道表数据,因为你在使用$ .get()方法加载页面后修改它.要在表数据中发生更改,请在调用sortThis()之前使用此调用.

$('#myTable').trigger("update");
Run Code Online (Sandbox Code Playgroud)

那应该可以解决你的问题.

作为tablesorter调用的一部分,您还可以使用以下语法来避免此错误:

$('#myTable:has(tbody tr)').tablesorter({
 ...
});
Run Code Online (Sandbox Code Playgroud)

我找到了jQuery Google Group发布的帮助.