[聚合文章] 前台分页,以及类别选择

CSS 2017-12-19 17 阅读

效果:

前台分页

区别于后台分页的将第几页和共多少条传到后台,再从后台从数据库查询出当前页应该显示的数据返回

前台分页是将所有的数据都查出存到前台,在经过用js进行判断,分页,显示

HTML代码:

        <div class="pageBox1" class="independent-bottom-right" style="width: 910px;">            <ul class="pageDiv clearfix">                </ul>        <div class="notContent hide">            无数据        </div>        <div class="page">            <ul class="pageMenu clearfix">                <li class="firstPage">首页</li>                <li class="prevPage"> < </li>                <div class="pageObj clearfix">                                    </div>                <li class="nextPage"> > </li>                <li class="lastPage">尾页</li>                <li class="last" style="font-size: 14px;"><span class="totalPage"></span>页,跳转至 <input type="number" class="keuInput" value="1">                    <button type="button" class="btnSure">确定</button>                </li>            </ul>        </div>

分页所需样式:

        ul,li{margin: 0;padding: 0;list-style: none;}        .pageMenu li::selection{background:transparent;}        .clearfix{zoom:1;}        .clearfix:after{content:"";display: block;clear: both;}        .pageBox{width:800px;background: #eee;border:1px solid #ebebeb;padding: 10px;margin: 0 auto;}        .pageDiv{width: 98.75%;background: #fff;padding-left: 1.25%;margin-bottom: 10px;}        .pageDiv li{margin-bottom: 10px;border:1px solid #dbdbdb;width: 21.5%;margin-right: 1.25%;float:left;margin-top: 10px;padding: 1%;text-align: center;}        .hide{display: none;}        .notContent{padding: 15px 0;text-align: center;}        .page{text-align: center;width: 100%;margin: 0 auto;}        .pageMenu{display: inline-block;position: relative;left: 20%;}                .pageMenu li{border: solid thin #ddd;margin: 3px;float: left;padding: 5px 10px;cursor: pointer;background: #fff;}        .pageMenu li.firstPage{}        .pageMenu li.prevPage{}        .pageMenu li.pageNum{}        .pageMenu li.nextPage{}        .pageMenu li.lastPage{}        .pageMenu li.disabled{ background-color: #DDDDDD;   cursor: not-allowed;}        .pageMenu li.active{ border: solid thin #0099FF;background-color: #0099FF;color: white;}        .pageMenu li.last{background: transparent;border:0;position: relative;top: -4px;}        .page .keuInput{padding: 0 5px;width: 30px;border: solid thin #ddd;height: 29px;outline: none;text-align: center;font-size: 16px;}        .page .btnSure{padding: 4px 8px;border: solid thin #ddd;outline: none;text-align: center;font-size: 16px;background: #fff;position: relative;top: 2px;}        .page .btnSure:hover{cursor: pointer;}        .pageObj{float: left;}

jquery控制分页代码:

<script>$(function(){    var typeid=<%=request.getParameter("id") %>;    var str='';    if(typeid!=null){        str='?typeid='+typeid;    }              $(".pageBox1").pageFun({  /*在本地服务器上才能访问哦*/        interFace:"<%=basePath%>/teach/course/listclassajax"+str,  /*接口*/        //interFace:{${classlist}},        displayCount:6,  /*每页显示总条数*/        maxPage:5,/*每次最多加载多少页*/        dataFun:function(data){            console.log(data);            var dataHtml = "<div class='independent-PracticeCourse-contentli'>"+            "<div class='independent-PracticeCourse-contentli-content'>"+            "<div class='independent-PracticeCourse-contentli-top'>"+            "<a href='<%=basePath%>/teach/course/classdetails?id="+data.id+"' ><img src='${server }"+data.img+"' width='306' height='192' alt='' /></a>"+                    "</div>"+            "<div class='independent-PracticeCourse-contentli-bottom'>"+            "<div class='independent-PracticeCourse-contentli-bottom-top'>"+            "<a href='<%=basePath%>/teach/course/classdetails?id="+data.id+"}'>"+                    data.name+"</a>"+                    "</div>"+                    "<div class='independent-PracticeCourse-contentli-bottom-bottom' style='text-align: left;'>"+                    "<div class='img-practice'> </div>"+                    "<div class='name-practice'>主讲人:"+data.teacher.nickName+"</div>";                    if(data.free==='免费'){                        dataHtml+="<div class='type-practice'>"+data.free+"</div>";                    }else if(data.free==='收费'){                        dataHtml+="<div class='type-practice1'>"+data.free+"</div>";                    }                    dataHtml+="</div>"+                    "<div class='independent-PracticeCourse-contentli-bottom-bottom'>"+                    "<div class='independent-PracticeCourse-contentli-bottom-time'></div>"+                    "</div>"+                    "</div>"+                    "</div>";                return dataHtml;        },        pageFun:function(i){            var pageHtml = '<li class="pageNum">'+i+'</li>';                return pageHtml;        }    })})</script>

最前面是判断是否有类别id传过来,如果有就根据传过来的类别id进行查询,如果没有就查询所有。

 

后台controller代码:

    /**     * 返回课程     * @param page     * @param limit     * @param name     * @return     */    @RequestMapping("/listclassajax")    @ResponseBody    public JSONObject listclassajax(Integer typeid) {        JSONObject jo = new JSONObject();        Map<String,Object> result=classservice.listclassbytype(typeid);        jo.put("status",  "ok");        jo.put("message", "success");        jo.put("datas", result.get("data"));        return jo;    }

这里需要注意的是,这里返回的数据,因为引入js文件的要求,需要以以上格式返回,其中 datas 是返回的内容集合。

完成了分页之后还有一个问题,如何根据在左边显示数据库中的类别信息,然后根据类别信息显示数据。

显示类别信息的HTML代码:

<div class="independent-banner-top-left-image">                <img src="%E8%AF%BE%E7%A8%8B_files/both-image.png" alt="" width="35"                    height="35">            </div>            <div class="independent-banner-top-left-bothwrite">全部课程</div>

js从数据库获取类别信息并追加到页面:

<script type="text/javascript">function type1() {    $.ajax({        type : "post",        url : '<%=basePath%>/teach/course/listtype1?q=1',                dataType : "json",                sync : "false",                success : function(data) {                    for (var a = 0; a < data.length; a++) {                        $("#typediv").append("<div class='independent-bottom-left-li-writemore-li'><a href='<%=basePath%>/teach/course/classlookpage?id="+data[a].id+"' >"+ data[a].name+ "</a></div>");                    }                 },                error : function() {                }            });}</script>

这里再追加类别信息到页面的时候,追加的是 超链接 ,然后在超链接的链接中写的就是当前页面的链接,然后加上当前类型的id,在分页之前就判断是否传过来id,如果有就根据id查询,如果没有就直接查询所有。

完整页面:

<%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><%@ page    import="org.springframework.security.core.context.SecurityContextHolder"%><%@ page import="com.wazn.learn.configure.security.CustomerUser"%><%    String basePath = request.getContextPath();    CustomerUser user = (CustomerUser) SecurityContextHolder.getContext().getAuthentication().getPrincipal();%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>课程预览</title><style type="text/css">.layui-btn {    margin: 8px 16px}.layui-input {    width: 200px;    margin: 8px}.layui-form-label {    width: 180px;    font-size: 16px;    margin: 8px}#searchtable {    margin: 20px;    padding: 10px;}#searchtable td {    width: 100px;    height: 30px;    font-size: 16px;    textalign: center;    border: 1px solid black;    padding: 5px}.layui-form-checkbox {    margin-top: 10px}</style><link rel="stylesheet" href="<%=basePath%>/res/css/style.css"     media="all"><script type="text/javascript" src="<%=basePath%>/res/js/jquery-1.12.4.min.js"></script><link rel="stylesheet" href="<%=basePath%>/res/layui/css/layui.css" media="all"><script src="<%=basePath%>/res/layui/layui.js" charset="utf-8"></script><script src="<%=basePath%>/res/js/page.js"></script></head><style type="text/css">li {    float: left;}.independent-PracticeCourse-contentli-content:hover {    box-shadow: 0 0 10px #666666;    cursor: pointer;}.listdiv {    width: 200px;    height: 300px;}.type-practice1 {    width: 45px;    height: 17px;    line-height: 16px;    text-align: center;    float: left;    color: #666;    font-size: 12px;    border: 1px solid #5ab62d;    color: #5ab62d;    color: #e02d2d;    border: 1px solid #e02d2d;}.layui-input {    width: 60%;}.layui-select {    width: 60%;}.independent-PracticeCourse-contentli{    margin-left: 25px;}                                ul,li{margin: 0;padding: 0;list-style: none;}        .pageMenu li::selection{background:transparent;}        .clearfix{zoom:1;}        .clearfix:after{content:"";display: block;clear: both;}        .pageBox{width:800px;background: #eee;border:1px solid #ebebeb;padding: 10px;margin: 0 auto;}        .pageDiv{width: 98.75%;background: #fff;padding-left: 1.25%;margin-bottom: 10px;}        .pageDiv li{margin-bottom: 10px;border:1px solid #dbdbdb;width: 21.5%;margin-right: 1.25%;float:left;margin-top: 10px;padding: 1%;text-align: center;}        .hide{display: none;}        .notContent{padding: 15px 0;text-align: center;}        .page{text-align: center;width: 100%;margin: 0 auto;}        .pageMenu{display: inline-block;position: relative;left: 20%;}                .pageMenu li{border: solid thin #ddd;margin: 3px;float: left;padding: 5px 10px;cursor: pointer;background: #fff;}        .pageMenu li.firstPage{}        .pageMenu li.prevPage{}        .pageMenu li.pageNum{}        .pageMenu li.nextPage{}        .pageMenu li.lastPage{}        .pageMenu li.disabled{ background-color: #DDDDDD;   cursor: not-allowed;}        .pageMenu li.active{ border: solid thin #0099FF;background-color: #0099FF;color: white;}        .pageMenu li.last{background: transparent;border:0;position: relative;top: -4px;}        .page .keuInput{padding: 0 5px;width: 30px;border: solid thin #ddd;height: 29px;outline: none;text-align: center;font-size: 16px;}        .page .btnSure{padding: 4px 8px;border: solid thin #ddd;outline: none;text-align: center;font-size: 16px;background: #fff;position: relative;top: 2px;}        .page .btnSure:hover{cursor: pointer;}        .pageObj{float: left;}</style><body onload="type1();">    <div class="independent-banner-top">        <div class="independent-banner-top-left">            <div class="independent-banner-top-left-image">                <img src="%E8%AF%BE%E7%A8%8B_files/both-image.png" alt="" width="35"                    height="35">            </div>            <div class="independent-banner-top-left-bothwrite">全部课程</div>                    </div>        <div class="independent-child">                </div>        <div class="independent-banner-top-ul">            <div class="independent-banner-top-left-bothwrite" style="float: right;"><a>查看更多>></a></div>        </div>    </div>    <div class="independent-both">        <!--左侧开始-->        <div class="independent-bottom-left">            <div class="independent-bottom-left-li" style="padding-top: 5px;">                <div class="independent-bottom-left-li-write">课程类型</div>                                <div class="independent-bottom-left-li-writemore" id="typediv">                </div>                <div class="independent-bottom-left-li-writemore-li">                        <a href="<%=basePath%>/teach/course/classlookpage">全部课程</a>                    </div>                <div class="independent-bottom-left-li-writemore">                                    </div>            </div>        </div>        <div class="independent-bottom-right" style="width: 910px;">            <div  style="width: 100%; height: 100%">                                </div>        <div class="pageBox1" class="independent-bottom-right" style="width: 910px;">            <ul class="pageDiv clearfix">                </ul>        <div class="notContent hide">            无数据        </div>        <div class="page">            <ul class="pageMenu clearfix">                <li class="firstPage">首页</li>                <li class="prevPage"> < </li>                <div class="pageObj clearfix">                                    </div>                <li class="nextPage"> > </li>                <li class="lastPage">尾页</li>                <li class="last" style="font-size: 14px;"><span class="totalPage"></span>页,跳转至 <input type="number" class="keuInput" value="1">                    <button type="button" class="btnSure">确定</button>                </li>            </ul>        </div>    </div>        </div>        </div>        </body><script>$(function(){    var typeid=<%=request.getParameter("id") %>;    var str='';    if(typeid!=null){        str='?typeid='+typeid;    }              $(".pageBox1").pageFun({  /*在本地服务器上才能访问哦*/        interFace:"<%=basePath%>/teach/course/listclassajax"+str,  /*接口*/        //interFace:{${classlist}},        displayCount:6,  /*每页显示总条数*/        maxPage:5,/*每次最多加载多少页*/        dataFun:function(data){            console.log(data);            var dataHtml = "<div class='independent-PracticeCourse-contentli'>"+            "<div class='independent-PracticeCourse-contentli-content'>"+            "<div class='independent-PracticeCourse-contentli-top'>"+            "<a href='<%=basePath%>/teach/course/classdetails?id="+data.id+"' ><img src='${server }"+data.img+"' width='306' height='192' alt='' /></a>"+                    "</div>"+            "<div class='independent-PracticeCourse-contentli-bottom'>"+            "<div class='independent-PracticeCourse-contentli-bottom-top'>"+            "<a href='<%=basePath%>/teach/course/classdetails?id="+data.id+"}'>"+                    data.name+"</a>"+                    "</div>"+                    "<div class='independent-PracticeCourse-contentli-bottom-bottom' style='text-align: left;'>"+                    "<div class='img-practice'> </div>"+                    "<div class='name-practice'>主讲人:"+data.teacher.nickName+"</div>";                    if(data.free==='免费'){                        dataHtml+="<div class='type-practice'>"+data.free+"</div>";                    }else if(data.free==='收费'){                        dataHtml+="<div class='type-practice1'>"+data.free+"</div>";                    }                    dataHtml+="</div>"+                    "<div class='independent-PracticeCourse-contentli-bottom-bottom'>"+                    "<div class='independent-PracticeCourse-contentli-bottom-time'></div>"+                    "</div>"+                    "</div>"+                    "</div>";                return dataHtml;        },        pageFun:function(i){            var pageHtml = '<li class="pageNum">'+i+'</li>';                return pageHtml;        }    })})</script><script type="text/javascript">function type1() {    $.ajax({        type : "post",        url : '<%=basePath%>/teach/course/listtype1?q=1',                dataType : "json",                sync : "false",                success : function(data) {                    for (var a = 0; a < data.length; a++) {                        $("#typediv").append("<div class='independent-bottom-left-li-writemore-li'><a href='<%=basePath%>/teach/course/classlookpage?id="+data[a].id+"' >"+ data[a].name+ "</a></div>");                    }                 },                error : function() {                }            });}</script></html>

 

这是需要引入的js文件:

;(function($,win,doc,unde){    $.fn.pageFun = function(options){        var that = $(this);        var defaults = {            pageDiv   : $(this).find(".pageDiv"),            pageDivLi : $(this).find(".pageDiv li"),            page      : $(this).find(".page"),            pageMenu  : $(this).find(".pageMenu"),            pageMenuLi: $(this).find(".pageDiv li"),            firstPage : $(this).find(".firstPage"),            prevPage  : $(this).find(".prevPage"),            pageNum   : $(this).find(".pageNum"),            nextPage  : $(this).find(".nextPage"),            pageObj   : $(this).find(".pageObj"),            pageObjLi : $(this).find(".pageObj li"),            lastPage  : $(this).find(".lastPage"),            keuInput  : $(this).find(".keuInput"),            btnSure   : $(this).find(".btnSure"),            notContent: $(this).find(".notContent"),            totalPage : $(this).find(".totalPage"),            pNum      : 1,            lastNum   : 0,            cacheNum  : 1,            min       : 0,            res       :null        };        var opts = $.extend({},defaults,options);        var Method = {            init : function(){                Method.getData(); /*请求接口获得数据*/                Method.handleEvent(); /*事件处理*/            },            getData : function(){                 $.getJSON(opts.interFace,function(data){                    if(data.status == "ok"){                        opts.res = data.datas;                        if((opts.res.length <= opts.displayCount)&&(opts.res.length > 0)){                            opts.displayCount = opts.res.length;                            opts.lastPage.addClass("disabled");                            opts.nextPage.addClass("disabled");                            opts.firstPage.off("click");                             opts.lastPage.off("click");                             opts.prevPage.off("click");                             opts.nextPage.off("click");                        }else if(opts.res.length == 0){                            opts.notContent.removeClass("hide");                            opts.firstPage.addClass("disabled");                             opts.prevPage.addClass("disabled");                             opts.lastPage.addClass("disabled");                             opts.nextPage.addClass("disabled");                             opts.firstPage.off("click");                             opts.lastPage.off("click");                             opts.prevPage.off("click");                             opts.nextPage.off("click");                            return;                        }                        else{                            opts.pNum = Math.ceil(opts.res.length / opts.displayCount);                                                    }                        opts.notContent.addClass("hide");                        for (var i = 0; i < opts.displayCount; i++) {                            opts.pageDiv.append(opts.dataFun(opts.res[i]));                        }                        for (var i = 0; i < opts.pNum; i++) {                            opts.pageObj.append(opts.pageFun(i+1));                        }                        var centerLeft = -(opts.pageMenu.outerWidth(true)/2)+"px"                        opts.pageMenu.css({marginLeft:centerLeft})                        opts.firstPage.addClass("disabled");                        opts.prevPage.addClass("disabled");                        opts.pageObj.find("li:first-child").addClass("active");                        opts.totalPage.text(opts.pNum);                        Method.showPageindex(0, opts.maxPage, 0);                    }                    else{                    }                  });            },            handleEvent : function(){                opts.pageObj.on("click","li",function(){  /*点击页码切换*/                    $(this).addClass("active");                    opts.pageDiv.empty();                    $(this).siblings("li").removeClass("active");                    opts.cacheNum = $(this).text();                                        if($(this).text() == 1){                         opts.firstPage.addClass("disabled");                         opts.prevPage.addClass("disabled");                         opts.lastPage.removeClass("disabled");                         opts.nextPage.removeClass("disabled");                        if (opts.pNum == 1) {                               opts.lastPage.addClass("disabled");                             opts.nextPage.addClass("disabled");                             Method.xhhtml($(this).text(),opts.res.length);                             return ;                        };                                      }else if($(this).text() == opts.pNum){                        opts.firstPage.removeClass("disabled");                        opts.prevPage.removeClass("disabled");                        opts.lastPage.addClass("disabled");                        opts.nextPage.addClass("disabled");                         if(opts.res.length<(opts.displayCount*opts.pNum)){                            Method.xhhtml($(this).text(),opts.res.length);                            return                        }                    }else{                         opts.firstPage.removeClass("disabled");                         opts.prevPage.removeClass("disabled");                         opts.lastPage.removeClass("disabled");                         opts.nextPage.removeClass("disabled");                    }                                        Method.showPageindex(0, opts.maxPage, $(this).text());                    Method.xhhtml($(this).text(),$(this).text()*opts.displayCount);                });                opts.prevPage.on("click",function(){ /*点击上页*/                                        if(opts.cacheNum == 1){                        return;                    }                    if(opts.cacheNum == 2){                        opts.firstPage.addClass("disabled");                        opts.prevPage.addClass("disabled");                    }                    opts.pageDiv.empty();                    opts.cacheNum--                    opts.lastPage.removeClass("disabled");                    opts.nextPage.removeClass("disabled");                    that.find(".pageObj li").eq(opts.cacheNum-1).addClass("active");                    that.find(".pageObj li").eq(opts.cacheNum-1).siblings("li").removeClass("active");                    Method.xhhtml(opts.cacheNum,opts.cacheNum*opts.displayCount);                    Method.showPageindex(0, opts.maxPage, opts.cacheNum);                });                opts.nextPage.on("click",function(){  /*点击下页*/                                         if(opts.cacheNum == opts.pNum){                        return;                    }                    opts.pageDiv.empty();                    opts.cacheNum++                    opts.firstPage.removeClass("disabled");                        opts.prevPage.removeClass("disabled");                    that.find(".pageObj li").eq(opts.cacheNum-1).addClass("active");                    that.find(".pageObj li").eq(opts.cacheNum-1).siblings("li").removeClass("active");                    if(opts.cacheNum == opts.pNum){                        opts.lastPage.addClass("disabled");                        opts.nextPage.addClass("disabled");                        Method.xhhtml(opts.cacheNum,opts.res.length);                    }else{                                                Method.xhhtml(opts.cacheNum,opts.cacheNum*opts.displayCount);                                            }                    Method.showPageindex(0, opts.maxPage, opts.cacheNum);                });                opts.firstPage.on("click",function(){   /*点击首页*/                    opts.pageDiv.empty();                    opts.firstPage.addClass("disabled");                    opts.prevPage.addClass("disabled");                    opts.lastPage.removeClass("disabled");                    opts.nextPage.removeClass("disabled");                    that.find(".pageObj li").eq(0).addClass("active");                    that.find(".pageObj li").eq(0).siblings("li").removeClass("active");                    Method.xhhtml(1,opts.displayCount);                    opts.cacheNum = 1;                    Method.showPageindex(0, opts.maxPage, 0);                });                opts.lastPage.on("click",function(){  /*点击尾页*/                    opts.pageDiv.empty();                    opts.firstPage.removeClass("disabled");                    opts.prevPage.removeClass("disabled");                    opts.lastPage.addClass("disabled");                    opts.nextPage.addClass("disabled");                    that.find(".pageObj li").eq(opts.pNum-1).addClass("active");                    that.find(".pageObj li").eq(opts.pNum-1).siblings("li").removeClass("active");                    opts.cacheNum = opts.pNum;                    Method.xhhtml(opts.pNum,opts.res.length);                    Method.showPageindex(0, opts.maxPage, opts.pNum);                });                opts.btnSure.on("click",function(){   /*输入页码 跳转*/                    var val = opts.keuInput.val();                    if((val == "")||val<=0){                        opts.keuInput.val(1);                        alert("请输入有效页码");                        return                    }                    if((Number(val)>opts.pNum)){                        alert('共'+opts.pNum+'页');                        return                    }                    opts.pageDiv.empty();                    that.find(".pageObj li").eq(val-1).addClass("active");                    that.find(".pageObj li").eq(val-1).siblings("li").removeClass("active");                    opts.cacheNum = val;                    Method.showPageindex(0, opts.maxPage, val);                    if(val == "1"){                        opts.firstPage.addClass("disabled");                        opts.prevPage.addClass("disabled");                        opts.lastPage.removeClass("disabled");                        opts.nextPage.removeClass("disabled");                        if(opts.pNum == 1){                            opts.firstPage.addClass("disabled");                            opts.prevPage.addClass("disabled");                            opts.lastPage.addClass("disabled");                            opts.nextPage.addClass("disabled");                        }                    }else if(val == opts.pNum){                        opts.firstPage.removeClass("disabled");                        opts.prevPage.removeClass("disabled");                        opts.lastPage.addClass("disabled");                        opts.nextPage.addClass("disabled");                        Method.xhhtml(val,opts.res.length);                        return;                    }else {                        opts.firstPage.removeClass("disabled");                        opts.prevPage.removeClass("disabled");                        opts.lastPage.removeClass("disabled");                        opts.nextPage.removeClass("disabled");                    }                    Method.xhhtml(val,val*opts.displayCount);                });            },            xhhtml : function(index,count){                                                for (var i = ((index-1)*opts.displayCount); i < count; i++) {                    opts.pageDiv.append(opts.dataFun(opts.res[i]));                }                opts.keuInput.val(index);            },            showPageindex : function(min, max, index) {                                            if (index <= Math.ceil(max / 2)) {                    min = 0;                    max = max;                }                else if (opts.pNum - index < Math.ceil(max / 2)) {                    min = opts.pNum - max;                    max = opts.pNum ;                }              else {console.log(min)            console.log(max)            console.log(index)                     min = Math.round(index - max / 2)-1;                    max = Math.round(Number(index) + Number(max / 2))-1;                    console.log(min)            console.log(max)            console.log(index)                                 }                that.find(".pageObj li").hide();                for (var i = min; i < max; i++) {                    that.find(".pageObj li").eq(i).show();                }            }        }        Method.init();    }})(jQuery,window,document,undefined)

注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版权等事宜,请你联系站长进行处理。