Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS无限卷轴_Javascript_Jquery_Scroll_Infinite - Fatal编程技术网

Javascript JS无限卷轴

Javascript JS无限卷轴,javascript,jquery,scroll,infinite,Javascript,Jquery,Scroll,Infinite,我用这个 对于正常的页面滚动,它的开箱即用效果非常好 不过我有一个问题,我的页面顶部有一个常规导航。我想做到的是: 访客进入网站。第1页已加载 访问者在我的导航中单击第3页,我希望加载第2页,然后加载第3页,并自动向下滚动到第3页 每一页都以一个带有和ID的div开头,例如 function checkAnchor( anchor ) { if ( $( anchor ).length ) { return true; } else {

我用这个

对于正常的页面滚动,它的开箱即用效果非常好

不过我有一个问题,我的页面顶部有一个常规导航。我想做到的是:

访客进入网站。第1页已加载 访问者在我的导航中单击第3页,我希望加载第2页,然后加载第3页,并自动向下滚动到第3页

每一页都以一个带有和ID的div开头,例如

function checkAnchor( anchor ) {

        if ( $( anchor ).length ) {
            return true;
        } else {

            $( '.article-feed' ).infiniteScroll( 'loadNextPage' );
            checkAnchor( anchor );
        }       

    }

$( document ).on( 'click', 'a[href^="#"]', function ( event ) {

        event.preventDefault();

        anchor = $.attr( this, 'href' );

        while ( checkAnchor( anchor ) == false ) {              

            $( '.article-feed' ).infiniteScroll( 'loadNextPage' );

        }

        $( 'html, body' ).animate( {
            scrollTop: $( $.attr( this, 'href' ) ).offset().top
        }, 700 );

    } );
我已经尝试了很多不同的方法来实现这个目标,但我似乎无法让它发挥作用。下一页将加载,但我必须单击链接,直到最后加载第3页。欢迎任何帮助

function checkAnchor( anchor ) {

        if ( $( anchor ).length ) {
            return true;
        } else {
            setInterval( function () {

                $( '.article-feed' ).infiniteScroll( 'loadNextPage' );

                var lastAnchor = "#" + $( ".anchor" ).last().attr( 'id' );

                if ( anchor == lastAnchor ) {
                    $( 'html, body' ).animate( {
                        scrollTop: $( anchor ).offset().top
                    }, 500 );
                    return true;
                } 

            }, 100 );
        }
    }

这种方法确实奏效了,但我觉得我是在用黑客破解这个

所以你的意思是,当用户点击第3页时,你不想跳过第2页的加载?不,我想先加载第2页,然后再加载第3页,就像用户手动滚动到第3页一样是的,这正是我的意思,你可以在(检查锚定(锚定)=假)我不使用infinate scroll,但这段代码是
同步的
,页面的加载将是
异步的
,因此您不能这样做。理想情况下,infinate scroll可以使用您可以使用的pageLoaded回调,但如果您的页面具有特定的标记/ID,则可以使用setInterval回调等待。