私は2つのテーブルを持っています。一方はもう一方のテーブルのヘッダーとして機能しています(理由は聞かないでください。実際には無関係であり、これは私にとっても他の回答にフィルターされます)。(div id = "tableBody")<td></td>
内の各セルの幅を取得し、それらを別のdivテーブル(id = "tableHeader")の対応するセルに適用したい<tr>
<th></th>
したがって、私の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>
上部の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]);
}
});
それもうまくいきませんでした。これに関する助けをいただければ幸いです。