如果您想滚动到#respond
何时#comments
不存在,只需检查选择器返回的对象的长度......如果它是 0 则它不在页面上,您可以使用offset().top
of#respond
代替。
jQuery(document).ready(function(){
var comments = jQuery('#comments');
var TopPosition = (comments.length==0)?
jQuery('#respond').offset().top :
comments.offset().top;
jQuery('.comments-link').click(function(){
jQuery('html, body').animate({scrollTop:TopPosition}, 2000, 'swing');
return false;
});
});
要在页面加载时向下滚动,您需要使用哈希(例如page.php#comments
),但是传统上您将有一个锚标记 ( <a name="comments'></a>
),并且页面会跳转到它。如果你想有一个流畅的滚动,你可以看看location.hash
然后触发滚动。由于它实际上与onClick
我将其分解为一个您可以同时调用两者的函数相同:
jQuery(document).ready(function(){
// Set up the onClick() event
jQuery('.comments-link').click(scrollToComments);
// If the page is page.php#comments scroll to the comments/response
if (location.hash=='#comments') scrollToComments();
});
// This function handles the scrolling on page load and onclick
function scrollToComments(){
var comments = jQuery('#comments');
// this can be moved outside the function, or recalculate in case the page redraws
var scrollTopPosition = (comments.length==0)?
jQuery('#respond').offset().top :
comments.offset().top;
jQuery('html, body').animate({scrollTop:scrollTopPosition}, 2000, 'swing');
return false;
}