找回密码
 立即注册
首页 业界区 业界 jQuery(六)jQuery实现瀑布分页

jQuery(六)jQuery实现瀑布分页

羔迪 2025-6-6 16:26:09
一、瀑布流分页案例分析
        1.1)  功能分析:
  鼠标下拉,加载分页数据(10条) ,如下图:
 
1.png

 
        1.2)  如何确定当前显示的数据已经浏览完毕?
        公式:(滚动条距底部的距离 + 滚动条上下滚动的距离 + 当前窗口的高度) >= 当前文档的高度
          举例:
  - 当前文档高度:存储10条数据,100px。
  - 滚动条距底部的距离:1px。
  - 当前窗口的高度:80px。
  - 滚动条上下滚动的距离:>=19px。
          因为文档高度不确定,不能只判断 滚动条上下滚动的距离大于等于19px。即要判断: 滚动条距底部的距离1px+当前窗口的高度80px +滚动条上下滚动的距离19px >=当前文档的高度。

        1.3)  前置知识点:
           $(function(){})  页面加载事件
           $(window)       获取当前窗口对象
           scroll()            鼠标滚动事件
           $(window).height()       当前窗口的高度
           $(window).scrollTop()        滚动条上下滚动的距离
           $(document).height()        当前文档高度
二、实现思路和代码
  
2.1)页面实现思路:
        1. 定义发送请求标记。(控制是否发起请求,如果当前处于请求状态,就不能再去发请求,只有在请求完毕才能重新发起请求,类似于多线程里的等待唤醒机制)
        2. 定义当前页码和每页显示的条数。 (分页必备的两个参数)
        3. 定义滚动条距底部的距离。(可以设置固定值1就可以)
        4. 设置页面加载事件。(事件里完成后续功能)
        5. 为当前窗口绑定滚动条滚动事件。()
        6. 获取必要信息(当前窗口的高度,滚动条上下滚动的距离,当前文档的高度)。
        7. 计算当前展示数据是否浏览完毕。(浏览完毕需要发起请求)
        8. 判断请求标记是否为 true。
        9. 为true,将请求标记置为 false,当前异步操作完成前,不能重新发起请求。
        10. 根据当前页和每页显示的条数来请求查询分页数据。
        11. 当前页码+1。
页面和代码:
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>网站首页</title>
  6.     <link rel="stylesheet" href="css/tt.css">
  7. </head>
  8. <body>
  9.     <span class="top-left">下载APP</span>
  10.     <span class="top-left"> 北京         晴天</span>
  11.     <span class="top-right">更多产品</span>
  12.    
  13.         
  14.             <img src="https://www.cnblogs.com/img/logo.png"><br/>
  15.         
  16.         <ul>
  17.             <li>
  18.                
  19.                     <span>
  20.                         推荐
  21.                     </span>
  22.                
  23.             </li>
  24.             <li>
  25.                 <span>
  26.                     视频
  27.                 </span>
  28.             </li>
  29.             <li>
  30.                 <span>
  31.                     热点
  32.                 </span>
  33.             </li>
  34.             <li>
  35.                 <span>
  36.                     直播
  37.                 </span>
  38.             </li>
  39.             <li>
  40.                 <span>
  41.                     图片
  42.                 </span>
  43.             </li>
  44.             <li>
  45.                 <span>
  46.                     娱乐
  47.                 </span>
  48.             </li>
  49.             <li>
  50.                 <span>
  51.                     游戏
  52.                 </span>
  53.             </li>
  54.             <li>
  55.                 <span>
  56.                     体育
  57.                 </span>
  58.             </li>
  59.         </ul>
  60.    
  61.    
  62.         <ul class="news_list">
  63.             <li>
  64.                
  65.                     
  66.                         
  67.                         
  68.                         这里是内容 !这里是内容 !这里是内容 !这里是内容 !这里是内容 !1
  69.                         <hr>
  70.                     
  71.                
  72.             </li>
  73.             <li>
  74.                
  75.                     
  76.                         这里是内容 !这里是内容 !这里是内容 !这里是内容 !这里是内容 !2
  77.                         <hr>
  78.                     
  79.                
  80.             </li>
  81.             <li>
  82.                
  83.                     
  84.                         这里是内容 !这里是内容 !这里是内容 !这里是内容 !这里是内容 !3
  85.                         <hr>
  86.                     
  87.                
  88.             </li>
  89.             <li>
  90.                
  91.                     
  92.                         这里是内容 !这里是内容 !这里是内容 !这里是内容 !这里是内容 !4
  93.                         <hr>
  94.                     
  95.                
  96.             </li>
  97.             <li>
  98.                
  99.                     
  100.                         这里是内容 !这里是内容 !这里是内容 !这里是内容 !这里是内容 !5
  101.                         <hr>
  102.                     
  103.                
  104.             </li>
  105.             <li>
  106.                
  107.                     
  108.                         这里是内容 !这里是内容 !这里是内容 !这里是内容 !这里是内容 !6
  109.                         <hr>
  110.                     
  111.                
  112.             </li>
  113.             <li>
  114.                
  115.                     
  116.                         这里是内容 !这里是内容 !这里是内容 !这里是内容 !这里是内容 !7
  117.                         <hr>
  118.                     
  119.                
  120.             </li>
  121.             <li>
  122.                
  123.                     
  124.                         这里是内容 !这里是内容 !这里是内容 !这里是内容 !这里是内容 !8
  125.                         <hr>
  126.                     
  127.                
  128.             </li>
  129.             <li>
  130.                
  131.                     
  132.                         这里是内容 !这里是内容 !这里是内容 !这里是内容 !这里是内容 !9
  133.                         <hr>
  134.                     
  135.                
  136.             </li>
  137.             <li>
  138.                
  139.                     
  140.                         这里是内容 !这里是内容 !这里是内容 !这里是内容 !这里是内容 !10
  141.                         <hr>
  142.                     
  143.                
  144.             </li>
  145.         </ul>
  146.         
  147.             <img src="https://www.cnblogs.com/img/loading2.gif" height="100%">
  148.         
  149.         
  150.             
  151.                
  152.             
  153.         
  154.         
  155.    
  156. </body>
  157. </html>
复制代码
 
2.2)服务器实现思路:
1. 获取请求参数(当前页,每页显示的条数)。
2. 根据当前页码和每页显示的条数,调用业务层的方法,得到分页 Page 对象。
3. 将得到的数据转为 json。
4. 将数据响应给客户端。
服务器代码:
  1. public class NewsServlet extends HttpServlet {
  2.     @Override
  3.     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  4.         //设置请求和响应的编码
  5.         req.setCharacterEncoding("UTF-8");
  6.         resp.setContentType("text/html;charset=UTF-8");
  7.         //1.获取请求参数
  8.         String start = req.getParameter("start");
  9.         String pageSize = req.getParameter("pageSize");
  10.         //2.根据当前页码和每页显示的条数来调用业务层的查询方法,得到分页Page对象
  11.         Page page = service.pageQuery(Integer.parseInt(start), Integer.parseInt(pageSize));
  12.         //3.将得到的数据转为JSON
  13.         String json = new ObjectMapper().writeValueAsString(page);
  14.         try {
  15.             Thread.sleep(1000);
  16.         } catch (InterruptedException e) {
  17.             e.printStackTrace();
  18.         }
  19.         //4.将数据响应给客户端
  20.         resp.getWriter().write(json);
  21.     }
  22.     @Override
  23.     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  24.         doPost(req,resp);
  25.     }
  26. }
复制代码
 
成功实现。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
2.png
3.gif

相关推荐

您需要登录后才可以回帖 登录 | 立即注册