JQuery пагинации обработки видимых и невидимых страниц

Я использую JQuery для нумерации страниц. Я вытаскиваю сотни записей из базы данных, а затем jquery выполняет разбиение на страницы на переднем конце.

Все остальные функции работают нормально, кроме видимых страниц. Я хочу показывать 10 или менее страниц за раз, когда другие страницы должны показываться при нажатии следующей или предыдущей.

Пожалуйста, посмотрите на изображение: есть 15 записей, которые поступают из базы данных, и я показываю одну запись на страницу, которая работает нормально, но все 15 страниц показывают одновременно.

Изображение: https://www.dropbox.com/s/8od2z5wzoj8l4u6/pager.png?dl=0

Вот мой код

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 ayah_image div, get specific items and show them
$('#ayah_image').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);
 }


                              $( document ).ready(function() {
                        var show_per_page = 1; 
                        //getting the amount of elements inside ayah_image div
                        var number_of_items = $('#ayah_image').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 = '<a class="previous_link" href="javascript:previous();">Prev</a>';
                        var current_link = 0;
                        while(number_of_pages > current_link){
                            navigation_html += '<a class="page_link" style="height:20px; width:30px;" href="javascript:go_to_page(' + current_link +')" longdesc="' + current_link +'">'+ (current_link + 1) +'</a>';
                            current_link++;

                        }

                        navigation_html += '<a class="next_link" href="javascript:next();">Next</a>';

                        $('#page_navigation').html(navigation_html);

                        //add active_page class to the first page link
                        $('#page_navigation .page_link:first').addClass('active_page');

                        $('#ayah_image').children().css('display', 'none');

                        //and show the first n (show_per_page) elements
                        $('#ayah_image').children().slice(0, show_per_page).css('display', 'block');
                        });

1 ответ

Похоже, вам нужна пара вещей:

  1. Обновляйте ссылки на страницы, когда вы нажимаете навигационную ссылку.
  2. Показывать только заданное количество ссылок на страницы вокруг выбранной в данный момент страницы.

Так что переместите логику генерации ссылки на страницу в такую ​​функцию:

function generatePageLinks(curPage) {
    var MAX_PAGE_LINKS = 10;
    var navigation_html = '<a class="previous_link" href="javascript:previous();">Prev</a>';
    var current_link = curPage - (MAX_PAGE_LINKS / 2);
    while(current_link < (MAX_PAGE_LINKS / 2) && number_of_pages > current_link){
        navigation_html += '<a class="page_link" style="height:20px; width:30px;" href="javascript:go_to_page(' + current_link +')" longdesc="' + current_link +'">'+ (current_link + 1) +'</a>';
        current_link++;
    }

    navigation_html += '<a class="next_link" href="javascript:next();">Next</a>';

    return navigation_html;
}

И позвоните по этой ссылке с go_to_page (и начальный вызов в doc.ready).

Непроверенный, но звучит разумно в моей голове;).

Другие вопросы по тегам