19

如果您使用带有分页器的 Tablesorter Jquery 插件,则在表格上添加将不会显示任何数据。数据在那里,但它是隐藏的。

我怀疑插件的浏览器功能检测方法无法处理IE11。

还有其他人遇到这个吗?

4

4 回答 4

30

看来IE11他的userAgent有问题。一个转变是像这样改变 clearTableBody 函数(在 jquery.tablesorter-2.0.3.js 中工作):

this.clearTableBody = function (table) {
    //if ($.browser.msie) {
        function empty() {
            while (this.firstChild) this.removeChild(this.firstChild);
        }
        empty.apply(table.tBodies[0]);
    //} else {
    //    table.tBodies[0].innerHTML = "";
    //}
};
于 2013-10-25T09:07:41.697 回答
20

这在某种程度上是由于 Internet Explorer 11 的用户代理字符串不包含“MSIE”,因此 jQuery 无法正确识别它(请参阅此问题)。

但实际上,TableSorter寻呼机代码不需要知道哪个浏览器正在运行代码。更改函数clearTableBody以利用 jQuery 的跨浏览器实现:

this.clearTableBody = function(table) {
    $(table.tBodies[0]).empty();
};

我已经在 IE8、IE9、IE11、Chrome 31 和 Firefox 24 中对此进行了测试。

(刚才,我发现了一个带有 TableSorter 分支的 GitHub 存储库,它可能已经解决了这个问题:https ://github.com/Mottie/tablesorter )

于 2013-11-21T12:28:23.047 回答
4

我们有同样的问题。我已直接向 Microsoft 提交了票证。

等着瞧...

https://connect.microsoft.com/IE/feedback/details/806279/bug-when-sorting-with-a-jquery-plugin

于 2013-10-24T10:10:27.617 回答
-1

一个简单的解决方案 - 将 jquery.tablesorter.js 中的行从更改 if($.browser.msie)为:

if(/msie/.test(navigator.userAgent.toLowerCase()) || window.navigator.userAgent.indexOf("Trident/7.0") > 0)为我工作。

/msie/.test(navigator.userAgent.toLowerCase())检测 IE 版本 10 或更低版本。 window.navigator.userAgent.indexOf("Trident/7.0") > 0检测到 IE 11。

于 2017-01-27T03:16:04.160 回答