Javascript 如何使用jquery在最短的时间内修改大表的行?
我有两个html表,每个表中的行数相同。我希望表A的行与表B的行具有相同的高度。 我试过这样的方法:Javascript 如何使用jquery在最短的时间内修改大表的行?,javascript,jquery,html,optimization,html-table,Javascript,Jquery,Html,Optimization,Html Table,我有两个html表,每个表中的行数相同。我希望表A的行与表B的行具有相同的高度。 我试过这样的方法: $tableA.find('tr').each(function (i, elem) { $row = $tableB.find('tr.calendar_row:eq(' + i + ')'); $(this).height($row.height()); }); 它工作得很好,但当我的表很大(+300行)时,此函数最多需要8秒 有没有办法提高绩效?例如,我试图将tableA
$tableA.find('tr').each(function (i, elem) {
$row = $tableB.find('tr.calendar_row:eq(' + i + ')');
$(this).height($row.height());
});
它工作得很好,但当我的表很大(+300行)时,此函数最多需要8秒
有没有办法提高绩效?例如,我试图将tableA
和tableB
行存储到vars中,并遍历这些数组,但似乎无法使用jquery的height()
函数
编辑:这是我的两个表:我希望我的tableA
行与tableB
尝试将表格B的行放入变量:
var rows = $tableB.find('tr.calendar_row');
$tableA.find('tr').each(function (i, elem) {
$row = rows.eq(i);
$(this).height($row.height());
});
好吧,多亏了穆罕默德,我终于得到了我想要的! 代码如下:
var height = $tableB.find('tr.calendar_row').map(function () { return $(this).height(); }).get();
$tableA.find('tr').each(function (i, elem) {
$(this).height(height[i]);
});
使用此方法,执行时间约为0.5s
谢谢大家的回答 桌子挨着吗?(并排)?一种方法是使用带有“gap”列的单个表,并调整边框,使其看起来像两个单独的表。然后,无论内容如何,每个
tr
都将始终保持相同的高度。我认为您的代码的问题在于按索引(:eq()
)查找元素需要很长时间。您可以在变量中存储行的高度,如var height=$(“tr.calendar_row”).map(函数(){return$(this.height();}).get()代码>并在循环中使用变量。也许我没有正确使用它,但我的tableA的行似乎不符合tableB的行高度。在我的每个循环中,我使用height变量如下:$(this).height(height)代码>考虑使用一个中间有间隙的单个表来改变表结构。它更快、更安全、更容易。它可以在不需要JS的情况下调整表行高度。不幸的是,我不能使用单个表,因为我需要tableA保持固定,而tableB可以水平滚动。它似乎不起作用,我得到了以下错误:未捕获类型错误:$row.height不是一个函数,这是一个错误,它确实起作用!它比Mohammad的解决方案慢(大约4秒),但它可能会帮助面临同样问题的人。