9

固定の高さとスクロールバーを持つ非表示の div があります。スクロール位置を変更したいのですが、div が非表示になっているため、ブラウザで変更できません。scrollTop プロパティは 0 のままです。

また、ちらつきの原因となるdivを表示したり隠したりしたくありません。

やり方を知っている人がいれば、とても助かります。

ありがとう!

4

3 に答える 3

3

jQuery の data 関数を使用してスクロールを保存できます。

function SaveScroll(val)
{
    $(the_element).data("Scroll", val);
}

function Show()
{
    var element = $(the_element);

    // prevent from showing while scrolling
    element.css
    ({
        position: "absolute",
        top: "-50000px",
        left: "-50000px",
        display: ""
    });

    // Scroll to the position set when it was hidden
    element.scrollTop(element.data("Scroll"));

    // show the element
    element.css
    ({
        position: "",
        top: "",
        left: ""
    });
}

これでうまくいくかもしれません


visibility: hiddenの代わりに使用できるかもしれませんdisplay: none。可視性は、要素をそのまま維持します。とまったく同じだと思いますopacity: 0が、クロスブラウザソリューションです。

于 2010-06-23T10:53:27.673 に答える
2

私の質問は完全ではありませんでした。div は単独では隠されません。非表示のコンテナ div の一部です。内側の div が親と共に表示されます。

<div class="container hidden">
    <div id="some_div">Content</div>
    <div id="my_div">I wanted to scroll this one</div>
    <div id="other_div">Content</div>
</div>

カスタムの「onShow」イベントを思いついた jQuery を使用します。

だから今、これを行うことができます:

$('#my_div').bind('show', function() {
    handle_scrollTopOffset();
});

show イベントがバインドされると、クラス.onShowが div に追加されます。また、クラスjQuery.fn.show()を持つ子で「show」イベントをトリガーするように関数がオーバーライドされてい.onShowます。

みんなの提案に感謝します。申し訳ありませんが、不完全な質問を提供しました。詳細は次回お伝えします。

于 2010-06-24T09:57:31.050 に答える
2

div のちらつきを防ぎ<div>、スクリプトが使用できない問題を修正するには、代わりに位置の非表示を使用できます"display: none;"

.hidden {
  position: absolute !important;
  left: -9999px !important;
  top: -9999px !important;
}
于 2010-06-23T10:53:26.483 に答える