【发布时间】: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