在不使用固定宽度的情况下,表格中所有单元格的宽度是否可以等于最宽单元格的宽度。
答案 0 :(得分:6)
是的。
<table>
<tr>
<td>short</td>
<td>longer</td>
<td>the longest cell</td>
</tr>
</table>
var max = 0,
$cells = $('td');
$cells.each(function () {
var width = $(this).width();
max = max < width ? width : max;
});
$cells.each(function () {
$(this).width(max);
});
https://jsfiddle.net/uqvuwopd/1/
[编辑]
正如@connexo在评论中指出的那样,当表格大于其最大尺寸时,需要更多逻辑来处理这种情况:
var max = 0,
$cells = $('td');
$cells.each(function () {
var width = $(this).width();
max = max < width ? width : max;
});
$table = $cells.closest('table');
if ($table.width() < max * $cells.length) {
max = 100 / $cells.length + '%';
}
$cells.each(function () {
$(this).width(max);
});
https://jsfiddle.net/uqvuwopd/3/
[编辑]
这是一个基于ECMA5的版本,不需要jQuery:
var max = 0,
cells = document.querySelectorAll('td');
Array.prototype.forEach.call(cells, function(cell){
var width = cell.offsetWidth;
max = max < width ? width : max;
});
var table = document.querySelector('table'),
uom = 'px';
if (table.offsetWidth < max * cells.length) {
max = 100 / cells.length;
uom = '%';
}
Array.prototype.forEach.call(cells, function(cell){
cell.setAttribute('style','width:' + max + uom);
});