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]}`);
});
});
};
我目前使用此功能根据行名(行中最左侧的单元格)和列名(列中最顶部单元格的值)向每个 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]}`);
});
});
};