我有2张桌子。一个是作为另一个表的标题(请不要问为什么,这真的无关紧要,这也会过滤到我的其他答案)。我想获取 (div id="tableBody") 中每个单元格的宽度<td></td>
并将<tr>
它们应用于<th></th>
不同 div 表中的相应单元格 (id="tableHeader")
所以我的 HTML 可能如下所示:
<html>
<body>
<div class="tableHeader">
<table>
<thead>
<tr>
<th>words</th>
<th>words</th>
<th>words</th>
<th>words</th>
<th>words</th>
<th>words</th>
<th>words</th>
<th>words</th>
</tr>
</thead>
</table>
</div>
<div class="tableBody">
<table>
<tbody>
<tr>
<td>words and stuff</td>
<td>words and stuff and things</td>
<td>words and stuff and some other stuff</td>
<td>less stuff</td>
<td>4</td>
<td>stuff and things</td>
<td>things and other things</td>
<td>stuff</td>
</tr>
<tr>
<!-- bunch of <td>s -->
</tr>
<tr>
<!-- bunch of <td>s -->
</tr>
<tr>
<!-- bunch of <td>s -->
</tr>
<!-- etc -->
</tbody>
</table>
</div>
</body>
</html>
到目前为止,我已经用 jquery 尝试了许多我认为应该可行的不同方法。我只得到<td>
top the top 中 s的宽度<tr>
。最终,我假设一个数组并且可能必须涉及一个 for 循环。
首先,我试过这个:
$(document).ready(function() {
var $tableBodyCell = $('.tableBody tr:eq(1) td');
var $headerCell = $('.tableHeader thead tr th');
var arr = [];
var thead = [];
$tableBodyCell.each(function() {
var $this=$(this);
var colWidth = $this.width();
arr.push(colWidth);
//alert(arr);
});
for(var i = 0; i < $headerCell.length; i++) {
$headerCell.css('width', arr[i]);
}
});
当我警告arr[i]
时,在 for 循环中,它会返回每个警报的每个独立宽度,但是当我尝试将它应用于 CSS 时,它将循环的最后一个数字应用于所有<th>s
所以我尝试了这个:
$(document).ready(function() {
var tableBodyCell = $('.tableBody tr:eq(1) td').toArray();
var headerCell = $('.tableHeader thead tr th').toArray();
for(var i = 0; i < headerCell.length; i++) {
//alert($headerCell[i].id + " " + arr[i]);
headerCell[i].css('width', tableBodyCell[i].css('width'));
//$(this).css('width',arr[i]);
}
});
那也没有用。对此的任何帮助将不胜感激。