これにより、セルの最後の行が正しい高さに設定されます(デモ)。
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に変換するのは簡単なはずです。
更新:より複雑なテーブルの場合は、最後の行を次のように置き換えます(デモ):
$.each($('td').get().reverse(), function() { grow(this); });
grow()
アイデアは、最後の行から始めて上に向かって、すべてのセルを呼び出すことです。