Generate page numbers using javascript/jquery?

后端 未结 4 1966
广开言路
广开言路 2020-12-31 20:45

How to generate page numbers like the below using javascript/jquery?

If the 5 th page is selected i have to show 3,4 and 6,7 and also 1,last page with prev,next... A

4条回答
  •  情书的邮戳
    2020-12-31 21:41

    Add two new hidden inputs

      
     
    

    Next add an empty div to create pagination controls

      
    
    
    $(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);
    }
    

提交回复
热议问题