使用javascript / jquery生成页码?

如何使用javascript / jquery生成如下所示的页码?

如果选择了第5页,我必须显示3,4和6,7以及1,最后一页显示prev,next …任何建议….

编辑:

如何使用这些分页div的json数据? (即)我的json数据在第1页中包含50个我想要10的记录,依此类推……如何使用这些数字对json数据进行分页…

我想要一个jquery函数来传递currentpageno,lastpagenumber ,该函数应该为我生成如下页面编号

如果是第一页

istpage http://img156.imageshack.us/img156/2527/1pagel.jpg

如果它在中间,

传呼机http://img98.imageshack.us/img98/7278/pagersy.jpg

如果是最后一页,

最后一页http://img204.imageshack.us/img204/541/lastpage.jpg

第二次编辑:

我尝试过这个function,但似乎没有得到理想的结果

 function generatePages(currentPage, LastPage) { if (LastPage <= 5) { var pages = ''; for(var i=1;i<=5;i++) { pages += "" + i + "" } $("#PagerDiv").append(pages); } if (LastPage > 5) { var pages = ''; for (var i = 1; i <= 5; i++) { pages += "" + i + "" } $("#PagerDiv").append(pages); } } 

我有lastPagecurrentPage值请帮助我得到这个…

您正在寻找的是“分页”,并且(一如既往)一个jQuery插件可以为您完成工作:

http://d-scribe.de/webtools/jquery-pagination/demo/demo_options.htm

( 在这里下载)


编辑:由于您似乎无法使其工作,这里有一种方式(几种不同)如何使用该插件。

步骤1:从JSON数据生成标记,如下所示:

 

想法是在单击页面链接时将相应的记录复制到显示div。 因此,该插件提供了pageSelect-callback函数。 第2步是实现此function,例如:

 function pageselectCallback(pageIndex, jq){ // Clone the record that should be displayed var newContent = $('#hiddenData div.record:eq('+pageIndex+')').clone(); // Update the display container $('#display').empty().append(newContent); return false; } 

这意味着每条记录只有一页。 如果要在每页显示多个记录,则必须相应地修改上述function。

第三步也是最后一步是正确初始化整个事情。

 function initPagination() { // Hide the records... they shouldn't be displayed $("#hiddenData").css("display", "none"); // Get the number of records var numEntries = $('#hiddenData div.result').length; // Create pagination element $("#pagination").pagination(numEntries, { num_edge_entries: 2, num_display_entries: 8, // number of page links displayed callback: pageselectCallback, items_per_page: 1 // Adjust this value if you change the callback! }); } 

因此,您只需从JSON数据生成HTML标记,然后调用init函数。

这不是那么难,是吗?

是的@SLaks是对的。 这里没什么太疯狂的。 你将有2个变量currentPageNumber和lastPageNumber。

 $("div.paginator").append("prev"); $("div.paginator").append("1"); for (x = (currentPageNumber - 2; x <= (currentPageNumber + 2); x++) { $("div.paginator").append(""+ x +""); } $("div.paginator").append(""+ lastPageNumber +""); $("div.paginator").append("next"); // you could apply styles to and a tag in the div.paginator // you could apply a special class to the a tag that matches the currentPageNumber // you can also bind some click events to each a tag and use the $(this).text() to grab the number of the page to go to 

使用这个或那个插件。 他们都是简单的html分页插件。 立即将所有内容放入html中并使用其中一个分页。

添加两个新的隐藏输入

   

接下来添加一个空div来创建分页控件

   $(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); //now when we got all we need for the navigation let's make it ' /* what are we going to have in the navigation? - link to previous page - links to specific pages - link to next page */ var navigation_html = 'Prev'; var current_link = 0; while(number_of_pages > current_link){ navigation_html += ''+ (current_link + 1) +''; current_link++; } navigation_html += 'Next'; $('#page_navigation').html(navigation_html); //add active_page class to the first page link $('#page_navigation .page_link:first').addClass('active_page'); //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_page').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_page').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; //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_page class to it and remove that class from previously active page link*/ $('.page_link[longdesc=' + page_num +']').addClass('active_page').siblings('.active_page').removeClass('active_page'); //update the current page input field $('#current_page').val(page_num); }