jQuery pagination + Twitter Bootstrap

后端 未结 5 759
有刺的猬
有刺的猬 2020-12-29 13:32

I\'m trying to modify a Jquery pagination (based on this Jquery pagination tutorial - demo) to work with the awesome twitter bootstrap.

Twitter Bootstrap\'s standard

5条回答
  •  清歌不尽
    2020-12-29 14:01

    Here is the standard jQuery.pagination library, which I have modified to use twitter bootstrap.

    create div -

    
    

    then

    $('#myPager').pagination(100,{callback:function(page,component){
        console.info(page);
    }})
    

    and here is the code for library.

    jQuery.fn.pagination = function(maxentries, opts){
        opts = jQuery.extend({
            items_per_page:10,
            num_display_entries:10,
            current_page:0,
            num_edge_entries:0,
            link_to:"javascript:void(0)",
            first_text:"First",
            last_text:"Last",
            prev_text:"Prev",
            next_text:"Next",
            ellipse_text:"...",
            prev_show_always:true,
            next_show_always:true,
            callback:function(){return false;}
        },opts||{});
    
        return this.each(function() {
            /**
             * Calculate the maximum number of pages
             */
            function numPages() {
                return Math.ceil(maxentries/opts.items_per_page);
            }
    
            /**
             * Calculate start and end point of pagination links depending on 
             * current_page and num_display_entries.
             * @return {Array}
             */
            function getInterval()  {
                var ne_half = Math.ceil(opts.num_display_entries/2);
                var np = numPages();
                var upper_limit = np-opts.num_display_entries;
                var start = current_page>ne_half?Math.max(Math.min(current_page-ne_half, upper_limit), 0):0;
                var end = current_page>ne_half?Math.min(current_page+ne_half, np):Math.min(opts.num_display_entries, np);
                return [start,end];
            }
    
            /**
             * This is the event handling function for the pagination links. 
             * @param {int} page_id The new page number
             */
            function pageSelected(page_id, evt){
                current_page = page_id;
                drawLinks();
                var continuePropagation = opts.callback(page_id, panel);
                if (!continuePropagation) {
                    if (evt.stopPropagation) {
                        evt.stopPropagation();
                    }
                    else {
                        evt.cancelBubble = true;
                    }
                }
                return continuePropagation;
            }
    
            /**
             * This function inserts the pagination links into the container element
             */
            function drawLinks() {
                panel.empty();
                var list = jQuery("
      "); panel.append(list); var interval = getInterval(); var np = numPages(); // This helper function returns a handler function that calls pageSelected with the right page_id var getClickHandler = function(page_id) { return function(evt){ return pageSelected(page_id,evt); } } // Helper function for generating a single link (or a span tag if it's the current page) var appendItem = function(page_id, appendopts){ page_id = page_id<0?0:(page_id"+(appendopts.text)+"
    • ") } else { var a = jQuery(""+(appendopts.text)+"") .attr('href', opts.link_to.replace(/__id__/,page_id));; var lstItem = jQuery("
    • ") .bind("click", getClickHandler(page_id)); lstItem.append(a); } if(appendopts.classes){lstItem.addClass(appendopts.classes);} list.append(lstItem); } // Generate "Previous"-Link if(opts.prev_text && (current_page > 0 || opts.prev_show_always)){ appendItem(0, { text: opts.first_text, side: true }); appendItem(current_page-1,{text:opts.prev_text, side:true}); } // Generate starting points if (interval[0] > 0 && opts.num_edge_entries > 0) { var end = Math.min(opts.num_edge_entries, interval[0]); for(var i=0; i"+opts.ellipse_text+"").appendTo(list); } } // Generate interval links for(var i=interval[0]; i 0) { if(np-opts.num_edge_entries > interval[1]&& opts.ellipse_text) { jQuery("
    • "+opts.ellipse_text+"
    • ").appendTo(list); } var begin = Math.max(np-opts.num_edge_entries, interval[1]); for(var i=begin; i 0) { pageSelected(current_page - 1); return true; } else { return false; } } this.nextPage = function(){ if(current_page < numPages()-1) { pageSelected(current_page+1); return true; } else { return false; } } // When all initialisation is done, draw the links drawLinks(); // call callback function //opts.callback(current_page, this); }); }

    提交回复
    热议问题