【问题标题】:jQuery table sort only works in FireFoxjQuery 表格排序仅适用于 FireFox
【发布时间】:2017-10-14 08:59:02
【问题描述】:

我的表格列排序功能在 Firefox 中运行良好,但仅在 Firefox 中。我测试过 Safari、IE11、MS Edge 等。

你们中的任何人都可以帮助我,并可以告诉我的代码有什么问题吗?

浏览器控制台未显示任何 JavaScript 错误...

    $(".sortable").click(function()
    {
        var order = ($(this).hasClass("asc") ? 'desc' : 'asc');
        var table_id = $(this).closest("table").attr('id');
        var column_id = $(this).attr('id');

        if(table_id != null && column_id != null)
        {
            $.post( "test.php", { site: getUrlVars("site"), table: $(this).closest("table").attr('id'), column: $(this).attr('id'), sort: order } );
        }

        $(this).closest("table").find(".sortable").removeClass("asc").removeClass("desc");
        $(this).addClass(order);

        var colIndex = $(this).prevAll().length;
        var tbod = $(this).closest("table").find("tbody");
        var rows = tbod.find("tr");

        rows.sort(function(a,b)
        {
            var A = $(a).find("td").eq(colIndex).text();
            var B = $(b).find("td").eq(colIndex).text();

            if (!isNaN(A)) A = Number(A);
            if (!isNaN(B)) B = Number(B);

            return (order == "asc" ? A > B : B > A);
        });

        $.each(rows, function(index, ele)
        {
            tbod.append(ele);
        });
    });

【问题讨论】:

  • 我不知道哪里错了,但两个浏览器之间的 DOM 可能不完全相同,console.log 每个元素以找出哪个元素不给出相同的值
  • 使用调试器查看发生了什么
  • 里面有一些奇怪的东西。首先,jQuery 的attr 不返回null,其次,如果通过Number 传递它似乎是不必要的。浏览器可能会以不同的方式处理一些奇怪的事情
  • @adeneo - 如果表甚至没有 id 它在我的脚本中返回 null 但它应该返回未定义。奇怪……我用的是最新的 JQuery 插件。

标签: javascript php jquery sorting


【解决方案1】:

@parlad 纽帕内

是的,它解决了我的问题。谢谢!

// old

return (order == "asc" ? A > B : B > A);

// new

return (order == "asc" ? (A < B ? -1 : B < A ? 1 : 0) : (A > B ? -1 : B > A ? 1 : 0));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    • 2014-11-17
    • 1970-01-01
    • 2016-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多