jQuery 根据行和列名称加快向 table 单元格添加工具提示

jQuery Speed up adding tooltips to table cells according to row and column name

我目前使用此功能根据行名(行中最左侧的单元格)和列名(列中最顶部单元格的值)向每个 table 单元格添加工具提示。它按预期工作,但根据 Google Chrome DevTools,它占用了大量脚本编写时间。我如何加快速度?

const add_tooltip = function(context) {
  context.find("th").each(function() {
    $(this).attr("title", $(this).text());
  });

  context.find("td").each(function() {
    $(this).attr("title", $(this).siblings("th").text() + ", " + context.find("thead th").eq($(this).index()).text());
  });
};

add_tooltip($("table"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
  <thead>
    <tr>
      <th>0</th>
      <th>1</th>
      <th>2</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>1</th>
      <td>test</td>
      <td>test</td>
    </tr>
    <tr>
      <th>2</th>
      <td>test</td>
      <td>test</td>
    </tr>
  </tbody>
</table>

这是我收集大家的反馈后想出来的新功能。我已经测试过它,它似乎并不比在使用 $.append() 构造 table 时包含 title 属性慢多少(这使得代码非常笨拙)。

const add_tooltip = function (context) {
    let row_names = [], column_names = [];

    context.find("th").each(function () {
        $(this).attr("title", $(this).text());

        if ($(this).parents("thead").length)
            column_names.push($(this).text());
        else
            row_names.push($(this).text());
    });

    context.find("tbody, tfoot").find("tr").each(function (i) {
        $(this).find("td").each(function (j) {
            $(this).attr("title", `${row_names[i]}, ${column_names[j + 1]}`);
        });
    });
};