我正在使用附加的代码进行分页,我试图在导航分页时添加一个功能来将页面滚动到顶部。 我的源代码脚本如下所示,我在这里找到了。
$(document).ready(function () {
//how much items per page to show
var show_per_page = 5;
//getting the amount of elements inside content div
var number_of_items = $('#content').children().size();
//calculate the number of pages we are going to have
var number_of_pages = Math.ceil(number_of_items / show_per_page);
//set the value of our hidden input fields
$('#current_page').val(0);
$('#show_per_page').val(show_per_page);
var navigation_html = '<ul>';
navigation_html += '<li class="previous_link">';
navigation_html += '<a href="javascript:previous();">←</a>';
navigation_html += '</li>';
var current_link = 0;
while (number_of_pages > current_link) {
navigation_html += '<li class="page_link" id="id' + current_link + '">';
navigation_html += '<a href="javascript:go_to_page(' + current_link + ')" longdesc="' + current_link + '">' + (current_link + 1) + '</a>';
current_link++;
navigation_html += '</li>';
}
navigation_html += '<li>';
navigation_html += '<a class="next_link" href="javascript:next();">→</a>';
navigation_html += '</li>';
navigation_html += '</ul>';
$('#page_navigation').html(navigation_html);
//add active class to the first page link
$('#page_navigation .page_link:first').addClass('active');
//hide all the elements inside content div
$('#content').children().css('display', 'none');
//and show the first n (show_per_page) elements
$('#content').children().slice(0, show_per_page).css('display', 'block');
});
function previous() {
new_page = parseInt($('#current_page').val()) - 1;
//if there is an item before the current active link run the function
if ($('.active').prev('.page_link').length == true) {
go_to_page(new_page);
}
}
function next() {
new_page = parseInt($('#current_page').val()) + 1;
//if there is an item after the current active link run the function
if ($('.active').next('.page_link').length == true) {
go_to_page(new_page);
}
}
function go_to_page(page_num) {
//get the number of items shown per page
var show_per_page = parseInt($('#show_per_page').val());
//get the element number where to start the slice from
start_from = page_num * show_per_page;
//get the element number where to end the slice
end_on = start_from + show_per_page;
activate_id = page_num;
var get_box = document.getElementById("id" + page_num);
//hide all children elements of content div, get specific items and show them
$('#content').children().css('display', 'none').slice(start_from, end_on).css('display', 'block');
/*get the page link that has longdesc attribute of the current page and add active class to it
and remove that class from previously active page link*/
$("#page_navigation").find('li.active').removeClass("active");
$(get_box).addClass("active");
//update the current page input field
$('#current_page').val(page_num);
}
我尝试过添加
$('#page_navigation .page_link').click(function () {
$('body,html').animate({
scrollTop: 0
}, 600);
return false;
});
这对我来说是一个陌生的领域,所以任何帮助都会受到高度赞赏。
答案 0 :(得分:3)
由于previous()
和next()
似乎都使用go_to_page()
功能进行导航,因此似乎最简单的方法是添加:
$('body,html').animate({
scrollTop: 0
}, 600);
在go_to_page()
函数的末尾。这样,无论用户页面是向前还是向后,动画都将在内容切换后发生。
这样的事情:
function go_to_page(page_num) {
// ... code removed for simplicity ...
//update the current page input field
$('#current_page').val(page_num);
// Scroll to the top
$('body,html').animate({
scrollTop: 0
}, 600);
}