2

次のようにテーブルを複製することにより、テーブルの最初の列をロックしようとするために、twitter ブートストラップを使用しています。

$('#dashboardtab').load('load_table.php', function() {  

    $('#scroller #testcase').each(function(){
        var table = $(this),
        fixedCol = table.clone(true),
        fixedWidth = table.find('th').eq(0).width(),
        tablePos = table.position();

        alert("LEFT: " + tablePos.left);

        ...
    });
});

私のHTMLは次のようになります。

<div class="row">
<div id="scroller">

    <table id="testcase" class="table table-striped table-bordered table-condensed">
    <thead>
        <tr>
           <th>TEST 1</th>
           <th>TEST 2</th>
           <th>TEST 3</th>
        </tr>
    </thead>
    <tbody>
    ...
    </tbody>
    </table>
</div>
</div>

位置が常に 0 である理由は何か分かりますか? ページを表示すると、明らかにこの位置にありません。

4

1 に答える 1

2

position()問題は、親要素に対する要素の位置を返すことだと思います。一方、この場合、ページ上の位置が必要なようですoffset()(ただし、それ以外の場合は、私が知る限り同じように使用されます)。API から (の場合position()):

.position() メソッドを使用すると、オフセットの親に対する要素の現在の位置を取得できます。これを、ドキュメントに対する現在位置を取得する .offset() と比較してください。新しい要素を別の要素の近くに配置し、同じ DOM 要素内に配置する場合は、.position() の方が便利です。

したがって、私はお勧めします:

tablePos = table.offset();

参考文献:

于 2012-08-28T15:29:54.183 に答える