2

scrolltop()jquery関数に問題があるライトボックスを使用しています。ライト ボックスが開くと、ドキュメントのスクロール バーがある場合は非表示になり、垂直スクロール位置が変数に保存されます。閉じると、ドキュメントのスクロール バーが元の位置に戻り、スクロール バーが元の位置に設定されます。コードは次のとおりです。

            $('html').css({
                'overflow-y' : 'auto'
            });
            $('html').scrollTop(org_scrolltop);

この状況scrollTopでは、関数はまったく機能しません。setTimeoutそこで、スクロール位置を設定する機能を試してみました。コードは次のとおりです。

            $('html').css({
                'overflow-y' : 'auto'
            });
            setTimeout(function(){
                $('html').scrollTop(org_scrolltop);
            },10);

現在は機能していますが、ページが時々ぎくしゃくしています。関数も試しanimate()ましたが無駄でした。

おそらく起こっていることは、最初にブラウザがスクロールバーをデフォルトの位置、つまり 0 に設定しているときにoverflow-yautoこの$('html').scrollTop(org_scrolltop);コード行が実行されていることです。そして、この過程でページがぎくしゃくします。

それを行うためのクリーンな方法があるかどうか知りたいです。つまり、を使用せずにsetTimeout. どのアイデアも非常に役立ちます。

4

1 に答える 1

0

これを使って:

$('html, body').animate({
    scrollTop: 0
}, 1000);

明らかに、0 をスクロール先の位置に変更し、1000 をスクロールに必要な長さに変更します。

于 2013-02-20T09:59:04.733 に答える