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

点击时如何对包含数字的div元素实现升序及降序排序功能

问题核心原因

  1. 取值逻辑错误:原getCellValue方法中传入的row本身就是.list_item节点,不需要额外查找子级.list_item
  2. 价格未做格式化:原价格文本包含空格、$、From字样等非数字内容,无法被识别为有效数字参与排序
  3. 原排序触发逻辑错误地将所有价格文本拼接后作为排序索引依据,逻辑不成立

修正后可用代码

原有HTML、CSS代码无需修改,仅替换JS部分即可实现点击价格表头切换升/降序排序:

jQuery(function ($) {
    // 记录排序方向,默认首次点击为升序
    let isAsc = true;
    $('#tsection').on('click', '.thead .price', function () {
        const tbody = $('#tsection .tbody').eq(0);
        // 提取所有行并按价格数值排序
        const sortedRows = tbody.find('.list_item').toArray().sort((a, b) => {
            // 清理价格文本中非数字字符,转成数值
            const priceA = Number($(a).find('.price').text().replace(/[^0-9]/g, ''));
            const priceB = Number($(b).find('.price').text().replace(/[^0-9]/g, ''));
            return priceA - priceB;
        });
        // 切换排序方向
        isAsc = !isAsc;
        if (!isAsc) sortedRows.reverse();
        // 重新渲染排序后的行
        sortedRows.forEach(row => tbody.append(row));
    })
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:54:02