如题,一个页面上有多个分页对象的时候用jquery-ajax-pager怎么搞,求大神

解决方案 »

  1.   

    (function (window, $) {
    var sjPager = window.sjPager ={
            opts: {
                pageSize: 10,
                preText: "上一页",
                nextText: "下一页",
                firstText: "首页",
                lastText: "尾页",
                shiftingLeft: 3,
                shiftingRight: 3,
                preLeast: 2,
                nextLeast: 2,
                showFirst: true,
                showLast: true,
                url: "",
                type: "POST",
                dataType: "JSON",
                async:false, //支持 同步 参数
                searchParam: {},
                beforeSend: null,
                success: null,
              //complete: null,
                error: function() {
                    alert("抱歉,请求出错,请重新请求!");
                },
                pageIndex: 1,
                totalCount: 0,
                totalPage: 0
            },
            pagerElement: null,
            commonHtmlText: {
                spanHtml: "<span class='{0}'>{1}</span>",
                pageIndexHtml: "<a href='javascript:void(0)' onclick='sjPager.doPage({0},{1},{2})'>{3}</a>",
                rightHtml: "<span class='text'> &nbsp; 共 {0} 页, 到第</span> <input type='text' id='txtToPager' value={1} /><span class='text'>页</span> <button id='btnJump' onclick='sjPager.jumpToPage(this.opts.searchParam,this.parentElement);return false;' >跳转</button>",
                clearFloatHtml: "<div style='clear:both;'></div>",
                stringEmpty: ""
            },
            init: function (obj,op) {
                var _self =this;// new sjPager(op);            _self.opts = $.extend({}, _self.opts, op);
                _self.pagerElement = obj;
               // _self.pagerElement = _self.opts.pagerElement;
                _self.doPage(_self.opts.pageIndex, _self.opts.pageSize, _self.opts.searchParam);            return _self;//.opts;
            },
            doPage: function (index, pageSize, searchParam) {
               // var parent=$parentDiv.parentElement;
                var _self = this;
                // _self.pagerElement=obj;
                // _self.opts.pagerElement=obj;
                _self.opts.pageIndex = index;
                _self.opts.pageSize = pageSize;
                _self.opts.searchParam = searchParam;
                // _self.pagerElement=$('#'+searchParam.div);
                // _self.opts.pagerElement=$('#'+searchParam.div);
                $.ajax({
                    type: _self.opts.type,
                    data: $.extend(_self.opts.searchParam || {}, {
                     page: _self.opts.pageIndex,
                     rows: _self.opts.pageSize || 10
                    }),
                    dataType: _self.opts.dataType,
                    url:_self.opts.url,
                    async: _self.opts.async, //支持 同步
                    beforeSend: function () {
                     if( $.isFunction(_self.opts.beforeSend)){
                     _self.opts.beforeSend();
                     };
                    },
                    error: function (XMLHttpRequest, textStatus, errorThrown) {
                        _self.opts.error(XMLHttpRequest, textStatus, errorThrown);
                    },
                    success: function (data) {
                        _self.opts.success(data);
                        //后台返回数据格式:{"total":0,"items":[]}
                        _self.opts.totalCount = data.result.totalRow;
                        _self.getTotalPage();
                        if (_self.opts.totalCount > 0 && _self.opts.pageIndex > 0) {
                            var pageTextArr = new Array;                        _self.createPreAndFirstBtn(pageTextArr);
                            _self.createIndexBtn(pageTextArr);
                            _self.createNextAndLastBtn(pageTextArr);
                            _self.renderHtml(pageTextArr);
                        }
                    }
                    /*,
                    complete: function () {
                     if( $.isFunction(_self.opts.complete)){
                      _self.opts.complete();
                     }
                    }*/
                });
            },
            getTotalPage: function() {
                var _self = this;
                // _self.opts.searchParam = searchParam;
                // _self.pagerElement=$('#'+searchParam.div);
                // _self.opts.pagerElement=$('#'+searchParam.div);
                _self.opts.totalPage = Math.ceil(_self.opts.totalCount / _self.opts.pageSize);
            },
            createPreAndFirstBtn: function (pageTextArr) {
                var _self = this;
                // _self.opts.searchParam = searchParam;
                // _self.pagerElement=$('#'+searchParam.div);
                // _self.opts.pagerElement=$('#'+searchParam.div);
                if (_self.opts.pageIndex == 1) {
                    if (_self.opts.showFirst)
                        pageTextArr.push(_self.createSpan(_self.opts.firstText, 'disenable'));                pageTextArr.push(_self.createSpan(_self.opts.preText, 'disenable'));
                } else {
                    if (_self.opts.showFirst) {
                        pageTextArr.push(_self.createIndexText(1, _self.opts.firstText));
                    }                pageTextArr.push(_self.createIndexText(_self.opts.pageIndex - 1, _self.opts.preText));
                }
            },
            createNextAndLastBtn: function (pageTextArr) {
                 var _self = this;
                // _self.opts.searchParam = searchParam;
                // _self.pagerElement=$('#'+searchParam.div);
                // _self.opts.pagerElement=$('#'+searchParam.div);
                if (_self.opts.pageIndex == _self.opts.totalPage) {
                    pageTextArr.push(_self.createSpan(_self.opts.nextText, 'disenable'));                if (_self.opts.showLast)
                        pageTextArr.push(_self.createSpan(_self.opts.lastText, 'disenable'));
                } else {
                    pageTextArr.push(_self.createIndexText(_self.opts.pageIndex + 1, _self.opts.nextText));
                    if (_self.opts.showLast)
                        pageTextArr.push(_self.createIndexText(_self.opts.totalPage, _self.opts.lastText));
                }
            },
            createIndexBtn: function (pageTextArr) {
                /*
                    前:当前页 > 偏移量 + 至少保留 + 1
                    后:当前页 < 总页码 - 偏移量 - 至少保留
                */             var _self = this;
                // _self.opts.searchParam = searchParam;
                // _self.pagerElement=$('#'+searchParam.div);
                // _self.opts.pagerElement=$('#'+searchParam.div);
                var shiftingLeftStart = _self.opts.shiftingLeft + _self.opts.preLeast + 1;
                var shiftingRightStart = _self.opts.totalPage - _self.opts.shiftingRight - _self.opts.nextLeast - 1;            /*页码*/
                if (_self.opts.pageIndex > shiftingLeftStart) {
                    for (i = 1; i <= _self.opts.preLeast; i++) {
                        pageTextArr.push(_self.createIndexText(i, i));
                    }                pageTextArr.push(_self.createSpan('...'));                for (i = _self.opts.pageIndex - _self.opts.shiftingLeft; i < _self.opts.pageIndex; i++) {
                        pageTextArr.push(_self.createIndexText(i, i));
                    }            } else {
                    for (i = 1; i < _self.opts.pageIndex; i++) {
                        pageTextArr.push(_self.createIndexText(i, i));
                    }
                }            pageTextArr.push(_self.createSpan(_self.opts.pageIndex, 'current'));            if (_self.opts.pageIndex <= shiftingRightStart) {                for (i = _self.opts.pageIndex + 1; i < _self.opts.pageIndex + 1 + _self.opts.shiftingRight; i++) {
                        pageTextArr.push(_self.createIndexText(i, i));
                    }                pageTextArr.push(_self.createSpan('...'));                for (i = _self.opts.totalPage - 1; i <= _self.opts.totalPage; i++) {
                        pageTextArr.push(_self.createIndexText(i, i));
                    }            } else {
                    for (i = _self.opts.pageIndex + 1; i <= _self.opts.totalPage; i++) {
                        pageTextArr.push(_self.createIndexText(i, i));
                    }
                }
            },
            renderHtml: function (pageTextArr) {
                var _self = this;
                // _self.opts.searchParam = searchParam;
                // _self.pagerElement=$('#'+searchParam.div);
                // _self.opts.pagerElement=$('#'+searchParam.div);
                var pageText = _self.commonHtmlText.stringEmpty;            for (var i = 0; i < pageTextArr.length; i++) {
                    pageText += pageTextArr[i];
                }            _self.pagerElement.html(pageText).append(stringFormat(_self.commonHtmlText.rightHtml, _self.opts.totalPage, _self.opts.pageIndex)).append(_self.commonHtmlText.clearFloatHtml);
            },
            createSpan: function (text, className) {
                var _self = this;            return stringFormat(_self.commonHtmlText.spanHtml, className ? className : _self.commonHtmlText.stringEmpty, text);
            },
            createIndexText: function (index, text) {
                var _self = this;
                return stringFormat(_self.commonHtmlText.pageIndexHtml, index, _self.opts.pageSize, JSON.stringify(_self.opts.searchParam), text);
            },
            jumpToPage: function() {
                var _self = this;
                var $txtToPager = $("#txtToPager", _self.pagerElement);
                var index = parseInt($txtToPager.val());            if (!isNaN(index) && index > 0 && index <= _self.opts.totalPage) {
                    _self.doPage(index, _self.opts.pageSize, _self.opts.searchParam);
                } else {
                    $txtToPager.focus();
                }
            }
        }
     $.fn.ajaxPager = function (option) {
            return sjPager.init($(this),option);
        };
    })(window, jQuery);上面是源码。这个只支持一个分页对象,多个的时候只会保留最后一个,js有点蒙。。
      

  2.   

    没办法 ,只能定义多个sjPager
      

  3.   

    换jquery.pagination.js,你这个明显就是单实例,无法创建多个,只能sjPager重名了
    http://www.jq22.com/jquery-info5697Web开发学习资料推荐
    jqGrid中文API
    jqGrid事件
      

  4.   

    换jquery.pagination.js,你这个明显就是单实例,无法创建多个,只能sjPager重名了
    http://www.jq22.com/jquery-info5697Web开发学习资料推荐
    jqGrid中文API
    jqGrid事件已经换了
      

  5.   

    stringFormat()怎么定义的