这会将最后一行单元格设置为正确的高度(
demo):
function grow(td) {
var table, target, high, low, mid;
td = $(td);
table = td.closest('table');
target = table.height();
low = td.height();
// find initial high
high = low;
while (table.height() <= target) {
td.height(high *= 2);
}
// binary search!
while (low + 1 < high) {
mid = low + Math.floor((high - low) / 2);
td.height(mid);
if (table.height() > target) {
high = mid;
} else {
low = mid;
}
}
td.height(low);
}
$('tr:last-child td').each(function() { grow(this); });
将它转换为纯JavaScript应该是微不足道的.
更新:对于更复杂的表,您将要用此替换最后一行(demo):
$.each($('td').get().reverse(), function() { grow(this); });
我们的想法是在每个单元格上调用grow(),从最后一行开始向上运行.