init上的jQuery TableSorter插件错误:无法读取未定义的属性“0”

时间:2012-01-16 10:51:08

标签: jquery jquery-plugins tablesorter

我想用jQuery插件TableSorter对表格进行排序。所以我得到了这张表:

<table id="stats" class="zebra-striped">
 <thead>
  <tr>
   <th>Date</th>
   <th>Annonce</th>
   <th>Support</th>
   <th>Nb Assoc.</th>
   <th>Nb Transfo.</th>
   <th>Cout</th>
  </tr>
 </thead>
 <tbody>
 </tbody>
</table>

因为你可以看到我的表是空的,只有标题。所以我使用空单元格初始化tableorter:

$("table#stats").tablesorter({ sortList: [[0,0]]});

并立刻得到了这个错误:

jquery.tablesorter.min.js:4 Uncaught TypeError: Cannot read property '0' of undefined

仅供参考,我的js已加载:

<!-- Grab Google CDN's jQuery, with a protocol relative URL; fall back to local if necessary -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js"></script>
<script>window.jQuery || document.write('<script src="js/libs/jquery-1.5.1.min.js">\x3C/script>')</script>
<script src="js/bootstrap-dropdown.js"></script>
<script src="js/bootstrap-scrollspy.js"></script>
<script src="js/jquery.tablesorter.min.js"></script>

任何想法为什么我得到这个以及如何让插件再次运行?

THX

6 个答案:

答案 0 :(得分:14)

您需要在表中包含数据,然后才能在其上调用sortList方法。这是因为你在这个方法中应用了一个索引,如果没有数据,它将找不到任何记录,并且会抛出“无法读取属性'0'未定义”错误。

答案 1 :(得分:12)

当有一个空表时,使用tablesorter是不好的,所以你可以使用这个条件:

if ($("table#stats tbody tr").length > 0)
   $(this).tablesorter({ sortList: [[0,0]]});

答案 2 :(得分:8)

不需要在表格中包含数据。以这种方式初始化你的表:

$("table#stats").tablesorter();

然后,在表中插入数据之后,必须告诉插件该表已更新并对其进行排序:

$("table#stats").trigger("update");
var sorting = [[0,0]];
$("table#stats").trigger("sorton",[sorting]);

答案 3 :(得分:3)

我无法解决任何问题,所以我在tablesorter的初始化时设置了超时...

setTimeout(function() {$('table').tablesorter();}, 10000);

答案 4 :(得分:2)

我注意到这发生在http://tablesorter.com/发现的最新版本(我认为是2.0.5b),但在早期版本中没有发生(我有2.0.3的副本,并且它起作用了)。但是,https://github.com/Mottie/tablesorter处有一个分叉版本,维护得更好,并且没有此错误。

答案 5 :(得分:2)

我收到错误&#34;无法读取属性&#39;格式&#39;未定义&#34;。在我的情况下,错误发生是由于“体内”的数量不同而引起的。比在&#39; thead&#39;