You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修改jQuery可排序表格:点击Title按标题字符长度排序

按标题字符长度排序的jQuery表格修改方案

针对t-1(解析单元格内容排序)

核心是把原有的字符串比较逻辑,替换成取单元格文本长度的数值比较。

假设原排序代码类似这样:

$('#t-1 th:contains("Title")').on('click', function() {
  const rows = $('#t-1 tbody tr').toArray().sort(function(a, b) {
    const textA = $(a).find('td:first').text().toUpperCase();
    const textB = $(b).find('td:first').text().toUpperCase();
    return textA.localeCompare(textB);
  });
  $('#t-1 tbody').append(rows);
});

修改后代码:

$('#t-1 th:contains("Title")').on('click', function() {
  const rows = $('#t-1 tbody tr').toArray().sort(function(a, b) {
    const lenA = $(a).find('td:first').text().length;
    const lenB = $(b).find('td:first').text().length;
    // 升序排序,要降序就改成 lenB - lenA
    return lenA - lenB;
  });
  $('#t-1 tbody').append(rows);
});

针对t-2(读取HTML5 data属性排序)

不用修改data属性的值,只需要调整排序时的取值逻辑——从拿data里的字符串,改成拿字符串的长度。

假设原排序代码类似:

$('#t-2 th:contains("Title")').on('click', function() {
  const rows = $('#t-2 tbody tr').toArray().sort(function(a, b) {
    const valA = $(a).find('td:first').data('sort').toUpperCase();
    const valB = $(b).find('td:first').data('sort').toUpperCase();
    return valA.localeCompare(valB);
  });
  $('#t-2 tbody').append(rows);
});

修改后代码:

$('#t-2 th:contains("Title")').on('click', function() {
  const rows = $('#t-2 tbody tr').toArray().sort(function(a, b) {
    const lenA = $(a).find('td:first').data('sort').length;
    const lenB = $(b).find('td:first').data('sort').length;
    return lenA - lenB;
  });
  $('#t-2 tbody').append(rows);
});

如果想通过data属性直接存长度优化性能,可以给td加data-length属性(比如<td data-sort="The Great Gatsby" data-length="15">...</td>),然后排序时取这个数值:

const lenA = parseInt($(a).find('td:first').data('length'), 10);
const lenB = parseInt($(b).find('td:first').data('length'), 10);

针对t-3(从JSON数据重建HTML排序)

直接在JSON数据层面按标题长度排序,再重新渲染表格即可。

假设原JSON数据和排序逻辑类似:

const bookData = [
  { title: "1984", author: "George Orwell" },
  { title: "To Kill a Mockingbird", author: "Harper Lee" }
];

$('#t-3 th:contains("Title")').on('click', function() {
  const sortedData = bookData.sort(function(a, b) {
    return a.title.toUpperCase().localeCompare(b.title.toUpperCase());
  });
  const tbody = $('#t-3 tbody').empty();
  sortedData.forEach(book => {
    tbody.append(`<tr><td>${book.title}</td><td>${book.author}</td></tr>`);
  });
});

修改后代码:

let titleSortAsc = true;
$('#t-3 th:contains("Title")').on('click', function() {
  const sortedData = bookData.sort(function(a, b) {
    const lenDiff = a.title.length - b.title.length;
    // 点击切换升序/降序
    return titleSortAsc ? lenDiff : -lenDiff;
  });
  titleSortAsc = !titleSortAsc;
  
  const tbody = $('#t-3 tbody').empty();
  sortedData.forEach(book => {
    tbody.append(`<tr><td>${book.title}</td><td>${book.author}</td></tr>`);
  });
});

内容的提问来源于stack exchange,提问作者Abe1985

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 09:07:03