zoukankan      html  css  js  c++  java
  • 模仿博客园首页 ajax 无刷新分页

    效果模仿 淘宝(http://s.taobao.com/search?q=920&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&initiative_id=tbindexz_20121221

    的分页不过他的不是ajax 也像博客园的首页分页(转载请保持原著):

    思路:1:创建页码 如图:

    服务器需要的返回总数(具体创建dom自己发挥 以及有多少页 具体思路 假如每页显示10条 总数除以10 1:结果等于总数不需要操作 2: 如果大于或者等于1默认为1 3:利用正则

    判断有小数点后加+1)代码如下:pageNumberCount 是总数

     pageNumberCount = json.total / 10, _RegExp = /\./;
     if (pageNumberCount <= 1) {
        pageNumberCount = 1;
       } else if (_RegExp.test(pageNumberCount)) {
           pageNumberCount = parseInt(pageNumberCount);
           pageNumberCount = pageNumberCount + 1;
       }:

    2:点击1获取第一页数据 点击2获取第2页数据。。。。后面就是这样的规律 看完后是不是觉得很容易啊!没错ajax就是那么简单(呵呵 不过也是用的别人写好的jquery内库)

    最后附加代码:

    /*
     *datatabel tootip提示
     */
    function getHtml(){
        this.html = "";
    }
            
    getHtml.prototype = {
        show: function(){
            var toolTip = $("<div id='tooltip' width='100px' height='12px'>" + this.html + "</div>");
            return toolTip;
        }
    }
            
    /*
     *jquery datatable
     */
    function _getDataTable(){
    }
            
    /*
     * jquery datatable 扩展
     * show             显示表格
     * getupPage        点击上一页向左递减
     * getdowmPage      点击下一页向右自加
     * getPageIndex     点击页码操作
     * createPageNumber 创建页面dom 操作
     * btnCreatePageNumber 点击确定按钮查询操作
     * createDateMenu   创建表头Menu
     */
    _getDataTable.prototype = {
        show: function (obj, tableID) {
            if (obj == "" || tableID == "") {
                return;
            }
            else {
                var tableInfo = tableID.dataTable({
                    "bInfo": obj.bInfo,
                    "bStateSave": obj.bStateSave,
                    "bRetrieve": obj.bRetrieve,
                    "bLengthChange": obj.bLengthChange, // 是否允许用户通过一个下拉列表来选择分页后每页的行数
                    'bPaginate': obj.bPaginate, //是否分页。
                    "bProcessing": obj.bProcessing, //datatable获取数据时候是否显示正在处理提示信息。 
                    "bServerSide": obj.bServerSide,
                    "bFilter": obj.bFilter, //过滤
                    "aaData": obj.aaData, //数据源
                    "aoColumns": obj.aoColumns, //数据源
                    "aoColumnDefs": obj.aoColumnDefs, //列排序
                    "fnRowCallback": obj.fnRowCallback,
                    "iDisplayLength": obj.iDisplayLength,
                    "sPaginationType": obj.sPaginationType
                });
                return tableInfo;
            }
        },
        getupPage: function (page_no, id) {
            //获取最大值最小值 这里修改利用each获取 
            var max = parseInt($("#page").children("a:last").text()), min = parseInt($("#page").children("a:first").text());
    
            //当前页小于最小值
            if (page_no <= min) {
                if (page_no == 1) {
                    return;
                }
                for (var i = min; i < page_no + 5; i++) {
                    $("#a_" + i + "").attr("id", "a_" + (i - 1) + "");
                    $("#a_" + (i - 1) + "").text(i - 1);
                }
            }
    
            //样式操作
            dataTableCss(page_no, pageNumberCount);
        },
        getdowmPage: function (page_no, id) {
            //获取最大值最小值 这里修改利用each获取 
            var i, max = parseInt($("#page").children("a:last").text()), min = parseInt($("#page").children("a:first").text());
    
            //当前页小于最大值
            if (page_no < max) {
            }
            else {
                if (page_no < pageNumberCount) {//当前页小于总页数才修改id 和文本值
                    for (var i = page_no; i > 0; i--) {
                        $("#a_" + i + "").attr("id", "a_" + (i + 1) + "");
                        $("#a_" + (i + 1) + "").text(i + 1);
                    }
                }
            }
            //样式操作
            dataTableCss(page_no, pageNumberCount);
        },
        getPageIndex: function (page_no, id, pageNumberCount) {
            //最大值最小值 这里修改利用each获取 
            var i, max = parseInt($("#page").children("a:last").text()), min = parseInt($("#page").children("a:first").text());
    
            if (page_no != pageNumberCount) {//当前页不等于总页数
                if (max == page_no) {////当前页等于最大值
                    for (var i = page_no; i > 0; i--) {
                        $("#a_" + i + "").attr("id", "a_" + (i + 1) + "");
                        $("#a_" + (i + 1) + "").text(i + 1);
                    }
                }
                else
                    if (min == page_no) {//当前页等于最小值
                        if (page_no != 1) {//当前页不等于1
                            for (var i = min; i < page_no + 5; i++) {
                                $("#a_" + i + "").attr("id", "a_" + (i - 1) + "");
                                $("#a_" + (i - 1) + "").text(i - 1);
                            }
                        }
                    }
            }
    
            //样式操作
            dataTableCss(page_no, pageNumberCount);
        },
        createPageNumber: function (pageNumberCount) {
            var pageCount = "", pageJquery = "",
                upPage = "<input class='pageNumberInfo' type='button' id='upPage' value='上一页' title='上一页'/>",
                dowmPage = "<input class='pageNumberInfo' type='button' value='下一页' id='dowmPage'  title='下一页'/>";
            omitPage = "<span id='omitPage' class='pageNumberInfo'>...</span>";
            page.append(upPage);
            if (pageNumberCount > 5) {
                _sum = 5
                for (var i = 1; i <= _sum; i++) {
                    pageCount += "<a class='pageNumberInfo' id='a_" + i + "' href=''>" + i + "</a>";
                }
                page.append(pageCount);
                page.append(omitPage);
            }
            else {
                for (var i = 1; i <= pageNumberCount; i++) {
                    pageCount += "<a class='pageNumberInfo' id='a_" + i + "' href=''>" + i + "</a>";
                }
                page.append(pageCount);
            }
            pageJquery = "共  " + pageNumberCount + "  页到第 <input class='pageNumberInfo' placeholder='请输入' type='text' id='jumpto' name='jumpto' title='指定页码'/><input class='pageNumberInfo' type='button' value='确定' id='btnJquery' title='指定页码'/>";
            page.append(pageJquery);
            page.append(dowmPage);
        },
        btnCreatePageNumber: function (page_no) {
            var i;
            //获取最大值最小值 这里修改利用each获取 
            var max = parseInt($("#page").children("a:last").text()), min = parseInt($("#page").children("a:first").text());
    
            var pageCount = "", pageJquery = "",
                upPage = "<input class='pageNumberInfo' type='button' id='upPage' value='上一页' title='上一页'/>",
                dowmPage = "<input class='pageNumberInfo' type='button' value='下一页' id='dowmPage'  title='下一页'/>";
            omitPage = "<span id='omitPage' class='pageNumberInfo'>...</span>";
            if (page_no >= max) {
                if (page_no == pageNumberCount) {
                    //点6情况
                    page.html("");
                    page.append(upPage);
                    for (var i = 4; i >= 0; i--) {
                        pageCount += "<a class='pageNumberInfo' id='a_" + (page_no - i) + "' href=''>" + (page_no - i) + "</a>";
                    }
                    page.append(pageCount);
                    page.append(omitPage);
                    pageJquery = "共  " + pageNumberCount + "  页到第 <input class='pageNumberInfo' placeholder='请输入' type='text' id='jumpto' name='jumpto' title='指定页码'/><input class='pageNumberInfo' type='button' value='确定' id='btnJquery' title='指定页码'/>";
                    page.append(pageJquery);
                    page.append(dowmPage);
                } else {
                    page.html("");
                    page.append(upPage);
                    for (var i = 4; i >= 0; i--) {
                        pageCount += "<a class='pageNumberInfo' id='a_" + (page_no - i + 1) + "' href=''>" + (page_no - i + 1) + "</a>";
                    }
                    page.append(pageCount);
                    page.append(omitPage);
                    pageJquery = "共  " + pageNumberCount + "  页到第 <input class='pageNumberInfo' placeholder='请输入' type='text' id='jumpto' name='jumpto' title='指定页码'/><input class='pageNumberInfo' type='button' value='确定' id='btnJquery' title='指定页码'/>";
                    page.append(pageJquery);
                    page.append(dowmPage);
                }
    
            } else if (page_no <= min) {
                if (page_no == 1) {
                    page.html("");
                    page.append(upPage);
                    for (var i = 0; i <= 4; i++) {
                        pageCount += "<a class='pageNumberInfo' id='a_" + (parseInt(page_no) + i) + "' href=''>" + (parseInt(page_no) + i) + "</a>";
                    }
                    page.append(pageCount);
                    page.append(omitPage);
                    pageJquery = "共  " + pageNumberCount + "  页到第 <input class='pageNumberInfo' placeholder='请输入' type='text' id='jumpto' name='jumpto' title='指定页码'/><input class='pageNumberInfo' type='button' value='确定' id='btnJquery' title='指定页码'/>";
                    page.append(pageJquery);
                    page.append(dowmPage);
                } else {
                    page.html("");
                    page.append(upPage);
                    for (var i = 0; i <= 4; i++) {
                        pageCount += "<a class='pageNumberInfo' id='a_" + (page_no - 1 + i) + "' href=''>" + (page_no - 1 + i) + "</a>";
                    }
                    page.append(pageCount);
                    page.append(omitPage);
                    pageJquery = "共  " + pageNumberCount + "  页到第 <input class='pageNumberInfo' placeholder='请输入' type='text' id='jumpto' name='jumpto' title='指定页码'/><input class='pageNumberInfo' type='button' value='确定' id='btnJquery' title='指定页码'/>";
                    page.append(pageJquery);
                    page.append(dowmPage);
                }
            }
    
            //样式操作
            dataTableCss(page_no, pageNumberCount);
        },
        createDateMenu: function (Menu) {
            $(".tops").contextMenu({
                menu: Menu
            }, function (action, el, pos) {
                //action 是点击对应菜单名称
            });
        }
    }
    
    function dataTableCss(page_no, pageNumberCount) {
        $("#a_" + page_no + "").addClass("indexPageClass").siblings().removeClass("indexPageClass");
        if (parseInt($("#page").children("a:last").text()) < pageNumberCount) {
            $("#omitPage").show();
        }
        else {
            $("#omitPage").hide();
        }
     }
    

      html:

       

    <div class="data_list">
     @{
          Html.RenderPartial("VehicleTable");
       }
    </div>
      <div id="page" style="margin: 0 auto; text-align:center;"></div>
      <div class="clear"></div>
    VehicleTable视图:
    @{
        ViewBag.Title = "DataTable_JS";
    }
    
    @CssOrJs.Css("DataTable/demo_page.css", Url)
    @CssOrJs.Css("DataTable/demo_table_jui.css", Url)
    @CssOrJs.Css("contextMenu/jquery.contextMenu.css", Url)
    
    @CssOrJs.Script("contextMenu/jquery.contextMenu.js", Url)
    
    @* DataTable*@
    <div id="VehicleTable">
    </div>
    @*菜单操作*@
    <ul id="myMenu" class="contextMenu">
        <li><a  onclick="fnShowHide(0);" href="javascript:void(0)">column 1</a></li>
        <li><a  onclick="fnShowHide(1);">column 2</a></li>
        <li><a  onclick="fnShowHide(2);">column 3</a></li>
        <li><a  onclick="fnShowHide(3);">column 4</a></li>
        <li><a  onclick="fnShowHide(4);">column 5</a></li>
        <li><a  onclick="fnShowHide(5);">column 6</a></li>
        <li><a  onclick="fnShowHide(6);">column 7</a></li>
    </ul>

    页面代码:

        var spanMsg = $("#spanCX"), page = $("#page"), pageIndex = $("#page a"), pageNumberCount, page_no = 1, page_count = 10;
        var getVehiceTable = new _getDataTable(), isCreatePage = true, ajax_request = false,jumpto=$("#jumpto");
            pageIndex.live("click", function (e) {
                e.preventDefault();
                if (ajax_request == false) {
                    page_no = parseInt($(this).attr("id").substring(2)); //(/\d+/).exec($(this).attr("id"));
                    var createobj = { page_no: page_no, pageID: "$('#page a')", pageNumberCount: pageNumberCount };
                    vehicle_Jquery("pageIndex", createobj);
                }
            });
            $("#btnJquery").live("click", function (e) {
                if (ajax_request==false) {
                    page_no = $("#jumpto").val().trim();
                    if (/^\d+$/.test(page_no) == false) {
                        return;
                    }
                    if (page_no > pageNumberCount) {
                        page_no = pageNumberCount;
                    }
                    var createobj = { page_no: page_no };
                    vehicle_Jquery("btnJquery", createobj);
                }
            });
    
            $("#upPage").live("click", function (e) {
                if (ajax_request == false) {
                    getVehiceTable.getupPage(page_no, $("#page a"));
                    if (page_no != 1) {
                        page_no--;
                        vehicle_Jquery("null",null);
                    }
                    $("#a_" + page_no + "").addClass("indexPageClass").siblings().removeClass("indexPageClass");
                }
            });
    
            $("#dowmPage").live("click", function () {
                if (ajax_request == false) {
                    getVehiceTable.getdowmPage(page_no, $("#page a"));
                    if (page_no < pageNumberCount) {//当前页小于总页数才请求数据
                        page_no++;
                        vehicle_Jquery("null", null);
                    }
                    $("#a_" + page_no + "").addClass("indexPageClass").siblings().removeClass("indexPageClass");
                }
            });
    

      vehicle_Jquery:

       function vehicle_Jquery(flag, obj) {
            var name = userName.val().trim(), _cust_id, _tree_path;
            ajax_request = true;
            spanMsg.show();
            if (name == "") {
                _cust_id = $.cookie('Login_cust_id');
                _tree_path = $.cookie('Login_tree_path');
                var searchUrl = $.cookie('xmlHost') + "customer/" + _cust_id + "/vehicle/search";
                var searchData = { auth_code: $.cookie('Login_auth_code'), tree_path: _tree_path, mode: "all", page_no: page_no, page_count: page_count, key: txtVehicleNumber.val().trim() };
                var searchObj = { type: "GET", url: searchUrl, data: searchData, success: function (json) { vehiclSearchSuccess(json, flag, obj) }, error: OnError };
                ajax_function(searchObj);
            }
            else {
                var isHave = false;
                for (var i = 0; i < _uerName.length; i++) {
                    if (name == _uerName[i].cust_name) {
                        isHave = true;
                        _cust_id = _uerName[i].cust_id;
                        _tree_path = _uerName[i].tree_path;
                        var searchUrl = $.cookie('xmlHost') + "customer/" + _cust_id + "/vehicle/search";
                        var searchData = { auth_code: $.cookie('Login_auth_code'), tree_path: _tree_path, mode: "all", page_no: page_no, page_count: page_count, key: txtVehicleNumber.val().trim() };
                        var searchObj = { type: "GET", url: searchUrl, data: searchData,success: function (json) { vehiclSearchSuccess(json, flag, obj) }, error: OnError };
                        ajax_function(searchObj);
                        break;
                    }
                }
                if (!isHave) {
                    alert("用户名输入错误!");
                }
            }
        }
    ajax_function 代码:
    /*
     * jquery ajax
     */
    function ajax_function(obj){
        $.ajax({
            type: obj.type,
            url: obj.url,
            data: obj.data,
            dataType: obj.dataType,
            success: obj.success,
            error: obj.error
        });
    }

    最后附加 vehiclSearchSuccess函数 

       var vehicleInfoSuccess = function vehicleInfoSuccess(json, flag, obj) {
            var j, _j, UnContacter, Uncontacter_tel;
            for (var i = 0; i < json.data.length; i++) {
                j = json.data[i].create_time.indexOf("T");
                _j = json.data[i].service_end_date.indexOf("T");
                json.data[i].create_time = json.data[i].create_time.substring(0, j);
                json.data[i].service_end_date = json.data[i].service_end_date.substring(0, _j);
            }
            spanMsg.hide();
            VehicleTable.empty();
            VehicleTable.html(tbHtml);
            VeicleTableID = $("#VeicleDable"), VDable = $("#VeicleDable thead tr th");
            var _columns = [{ "mData": "cust_name", "sClass": "center" },
                              { "mData": "obj_name", "sClass": "center" },
                              { "mData": "cust_name", "sClass": "center" },
                              { "mData": "cust_id", "sClass": "center" },
                              { "mData": "sim", "sClass": "center" },
                              { "mData": "create_time", "sClass": "center" },
                              { "mData": "service_end_date", "sClass": "center" },
                              { "mData": null, "sClass": "center", "fnRender": function (obj) {
                                  return '<a  id=' + obj.aData.obj_id + '  class="set" href="#">设置</a>';
                              }
                              }];
            var aoColumnDefs = [{ "bSortable": false, "aTargets": [7]}]//设置0列不可排序
            var objTable = { "bInfo": false, "bStateSave": false, "bRetrieve": true, "bLengthChange": false, 'bPaginate': false,
                "bProcessing": true, "bServerSide": false, "bFilter": false, "aaData": json.data,
                "aoColumns": _columns, "aoColumnDefs": aoColumnDefs
            }
            VeicleTable = getVehiceTable.show(objTable, VeicleTableID);
    
            //create pageNumber
            if (isCreatePage == true) {
                if (json.data.length <= 0) {
                    return;
                }
                pageNumberCount = json.total / 10, _RegExp = /\./;
                if (pageNumberCount <= 1) {
                    pageNumberCount = 1;
                } else if (_RegExp.test(pageNumberCount)) {
                    pageNumberCount = parseInt(pageNumberCount);
                    pageNumberCount = pageNumberCount + 1;
                }
                getVehiceTable.createPageNumber(pageNumberCount);
                isCreatePage = false;
            }
            ajax_request = false;
    
            //菜单操作
            getVehiceTable.createDateMenu("myMenu");
    
            //菜单按钮html赋值(取dataTable对象的列名称,申明 var Mydata 把Mydata赋值VeicleTableID.dataTable({xxxx}) Mydata.DataTable.settings[0].aoColumns[0].sTitle)
            VULhtml.each(function (index) {
                if ($.cookie('VeicleMenu' + index) == "x") {
                    VULhtml[index].innerHTML = VeicleTable.DataTable.settings[0].aoColumns[index].sTitle;
                }
                else {
                    VULhtml[index].innerHTML = VDable[index].innerHTML + '√';
                }
            });
            if (flag == "pageIndex") {
                getVehiceTable.getPageIndex(obj.page_no, obj.pageID, obj.pageNumberCount);
            } else if (flag == "btnJquery") {
                getVehiceTable.btnCreatePageNumber(obj.page_no);
                $("#jumpto").val(obj.page_no);
            }
     

          

         

      

  • 相关阅读:
    Windows10字体模糊解决方法
    Synaptics触摸板在Windows10下双击弹出右键菜单无效的解决方法
    JDBC连接字符串及参数
    IntelliJ IDEA数据库工具连接MySQL提示Download missing driver files
    IntelliJ IDEA利用数据表生成JavaBean
    Windows下MySQL8.0的配置文件及数据库的默认目录
    MySQL配置说明
    (medium)LeetCode 221.Maximal Square
    (medium)LeetCode 222.Count Complete Tree Nodes
    (medium)LeetCode 224.Basic Calculator
  • 原文地址:https://www.cnblogs.com/y112102/p/s_p.html
Copyright © 2011-2022 走看看