Javascript JS无限卷轴
我用这个 对于正常的页面滚动,它的开箱即用效果非常好 不过我有一个问题,我的页面顶部有一个常规导航。我想做到的是: 访客进入网站。第1页已加载 访问者在我的导航中单击第3页,我希望加载第2页,然后加载第3页,并自动向下滚动到第3页 每一页都以一个带有和ID的div开头,例如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 {
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回调等待。