2

我正在使用 twitter bootstrap 尝试通过克隆表来锁定表中的第一列,如下所示:

$('#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 回答