1

divのページに戻るときに、div内の位置にスクロールしたい。したがって、リスト内のアイテムをクリックすると、そのアイテムのIDはたとえば223になります。ページに戻るとき、scrollTopは前にクリックしたのと同じ位置に移動する必要があります。

アイテムのIDをCookieに保存します。

これが私のコードです:

$(function () {
    var id = $.cookie('LastPositionCookie');
    var rowPos = $("#" + id).position();

    if (rowPos != null) {
        $('#tableBodyRes').scrollTop(rowPos.top);
    }
    else {
        alert(id + " " + rowPos + " error.");
    }
});

スクロールは正常に機能しますが、div(tableBodyRes)からではなく、ページの上部からスクロールします。どうすればこれを修正できますか?

編集:情報付きの写真を追加

ここに画像の説明を入力してください

ここでは、左側にオーバーフローのある私のdivを見ることができます。そして右側には、私のブラウザの通常のオーバーフローがあります。もう一度このページに戻るときは、緑色の項目に移動する必要があります。

ありがとう

4

1 に答える 1

2

ページを要素の先頭までスクロールするには、

// Swap ...
$('#tableBodyRes').scrollTop(rowPos.top);

// With ...
$('body').scrollTop(rowPos.top);

編集

overflow:hidden;将来の参考のために、当面の問題は、ドキュメント自体ではなく、親要素(親は)を基準にした位置に内部要素をスクロールすることです。

私たちが思いついた解決策は、内側の要素の一番上の位置を取り、それから親要素の一番上の位置を引くことでした。

関連するjQuery

var rowPos = $("#336").position();
var divPos = $("#tableBodyRes").position();

var newTop = rowPos.top - divPos.top;

$('#tableBodyRes').scrollTop(newTop);

HTML

<div id="tableBodyRes" class="tableBodyDiv clearfix">
    <table id="tableReservations">
        <tr id="335"><td>335</td></tr>
        <tr id="336"><td>336</td></tr>
        <tr id="337"><td>337</td></tr>
    </table>
</div>

そして、適切な測定のためのjsFiddle。

于 2012-09-20T06:52:05.820 に答える