Javascript jQuery+;TableSorter:表为空时出错
jQuery的插件TableSorter似乎无法处理将其附加到空表的情况。有什么好办法吗 在我的应用程序中,用户可以过滤和搜索数据,最终他或她会给出一个不返回任何值的搜索条件。在这些情况下,最好是“分离”TableSorter,或者以某种方式修复它的代码,以便它能够处理空表 我目前使用的插件如下:Javascript jQuery+;TableSorter:表为空时出错,javascript,jquery,exception,tablesorter,Javascript,Jquery,Exception,Tablesorter,jQuery的插件TableSorter似乎无法处理将其附加到空表的情况。有什么好办法吗 在我的应用程序中,用户可以过滤和搜索数据,最终他或她会给出一个不返回任何值的搜索条件。在这些情况下,最好是“分离”TableSorter,或者以某种方式修复它的代码,以便它能够处理空表 我目前使用的插件如下: $("#transactionsTable") .tablesorter({ widthFixed: true, widgets: ['zebra'] }) .tablesor
$("#transactionsTable")
.tablesorter({ widthFixed: true, widgets: ['zebra'] })
.tablesorterPager({ container: $("#pager"), positionFixed: false });
这很有效,直到桌子空了。然后我得到以下错误:
Line: 3
Error: '0.length' is null or not an object
有什么想法吗?是否可以更改脚本,使tablesorter仅在有行的情况下添加到表中?我想您可以自己做
if ($("#transactionsTable").find("tr").size() > 1)
{
//> 1 for the case your table got a headline row
$("#transactionsTable")
.tablesorter({ widthFixed: true, widgets: ['zebra'] })
.tablesorterPager({ container: $("#pager"), positionFixed: false });
}
如果您的桌子上有tbody标签,则更容易:
if ($("#transactionsTable").find("tbody").find("tr").size() > 0)
这种方法可能不是最专业的方法,但在这种情况下应该可以使用。这个问题与以下事实有关:代码库的几个部分使用行[0]来确定1)总列数,2)每列使用的解析器类型(例如“文本”与“数字”) 在修复此错误之前,这里有一个简单的解决方法:
这似乎很有效,允许tablesorter初始化和运行时无错误,并且对呈现的输出没有影响。更通用的方法是覆盖tablesorter插件本身以检查空表(直到它们解决问题为止)。请参阅这篇关于重写jquery核心方法的文章:
这已在最新的tablesorter()中修复。因为覆盖插件总是一个坏主意,这里有一种不同的方法:如果您只想确保您的数据表包含实际的数据行,jQuery选择器:has()也会完成这项工作
$('table.tablesorter:has(tbody tr)').tablesorter({
// your tablesorter config here
});
顺便说一句,我发现了一个处理空表的选项。链接证明了这一点。它的2015年和缺陷仍然存在。我使用了tbody方法,效果很好。事实上,我使用的是2.0.5b版,我认为这是最新最棒的版本,但它仍然是一个问题。
$('table.tablesorter:has(tbody tr)').tablesorter({
// your tablesorter config here
});