1

私はjsの本当の初心者なので、質問は次のようになります。

フッターに到達するとフローティングを停止するフローティングサイドバーがあります。jsコードは次のとおりです。

$(window).load(function(){
    $(function() {
        var top = $('#sidebar').offset().top - parseFloat($('#sidebar').css('marginTop').replace(/auto/, 0));
        var footTop = $('#footer').offset().top - parseFloat($('#footer').css('marginTop').replace(/auto/, 0));

        var maxY = footTop - $('#sidebar').outerHeight();

        $(window).scroll(function(evt) {
            var y = $(this).scrollTop();
            if (y > top) {
                if (y < maxY) {
                    $('#sidebar').addClass('fixed').removeAttr('style');
                } else {
                    $('#sidebar').removeClass('fixed').css({
                        position: 'absolute',
                        top: (maxY - top) + 'px'
                    });
                }
            } else {
                $('#sidebar').removeClass('fixed');
            }
        });

これは、ajaxページ付けとコンテンツの読み込みを実装するまではかなりうまくいきました。サイドバーは、1ページ目を表示したときにのみスクロールし、2ページ目がajaxを介して読み込まれると、サイドバーはスクロールしません。あなたはここでそれを見ることができます。

コードを希望どおりに機能させるために、コードを変更する必要があるアイデアはありますか?

4

2 に答える 2

1

問題は、初期化を一度だけ行うことmaxYですfootTop。ドキュメントを拡張するときに変更する必要があります。スクロールが発生するたびにそれらを再計算する場合があります。

于 2012-05-17T12:27:20.680 に答える
0

これはあなたが探しているものであなたを助けるかもしれません。

http://cubiq.org/dropbox/followalong/

于 2012-05-17T12:30:52.397 に答える