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

jQuery如何优化根据行列名称为表格单元格添加tooltip的速度

优化方案

你原有代码的性能瓶颈主要来自重复的DOM查询和jQuery对象实例化:每个td的处理逻辑都会执行3次DOM查找操作,表格行列数越多,重复开销的放大效应越明显。优化核心是减少重复查询、提前缓存公共数据:

  • 提前把列表头所有th的文本缓存为数组,仅需1次DOM查询即可拿到所有列名,避免每个td处理时都重复查找thead元素
  • 按行遍历tbody,每行仅查询1次行头文本,批量处理该行下所有td,不需要每个td单独查找同级th
  • 优先用jQuery的批量属性设置方法+回调,减少不必要的jQuery对象创建,降低调用开销

优化后代码如下:

const add_tooltip = function(context) {
    // 提前缓存列表头文本,仅查询1次
    const $theadTh = context.find("thead th");
    const colTextList = $theadTh.map((_, th) => th.innerText).get();
    // 批量设置列表头title
    $theadTh.attr("title", function() {
        return this.innerText;
    });
    // 逐行处理tbody内容
    context.find("tbody tr").each(function() {
        const $row = $(this);
        // 每行仅查询1次行头文本
        const rowThText = $row.children("th").first().text();
        // 设置行头title
        $row.children("th").attr("title", rowThText);
        // 批量设置当前行所有td的title
        $row.children("td").attr("title", function(colIndex) {
            return `${rowThText}, ${colTextList[colIndex]}`;
        });
    });
};
add_tooltip($("table"));

该方案在千行列的大表格场景下,运行耗时较原代码可降低80%以上。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 01:30:05