• jQuery ScrollPagination


    看着腾讯微博的ScrollPagination挺好玩的,就在网上找找,写了个demo玩玩。

    JQuery ScrollPagination :
    http://andersonferminiano.com/jqueryscrollpagination/ 

    在该插件基础上修修改改。

    1. 简单的servlet代码 

    DemoServlet

     1 /**
     2  * Create by: zhuyoufeng
     3  * Date: 12-4-4
     4  */
     5 public class DemoServlet extends HttpServlet {
     6     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     7         doGet(request, response);
     8     }
     9 
    10     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    11         List<String> content = new ArrayList<String>();
    12         for (int i = 0; i < 20; i++) {
    13             content.add("Let's learn how to implement Scroll Pagination" + i);
    14         }
    15         request.setAttribute("content", content);
    16         request.getRequestDispatcher("/jsp/demo.jsp").forward(request, response);
    17     }

    18 } 

    PaginationServlet 

     1 /**
     2  * Create by: zhuyoufeng
     3  * Date: 12-4-4
     4  */
     5 public class PaginationServlet extends HttpServlet {
     6     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     7         doGet(request, response);
     8     }
     9 
    10     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    11         StringBuilder sb = new StringBuilder();
    12         sb.append("{\"root\":[");
    13         for (int i = 0; i < 20; i++) {
    14             sb.append("{\"content\":\"New:Let's learn how to implement Scroll Pagination.\"},");
    15         }
    16         String str = sb.substring(0, sb.length() - 1) + "]}";
    17         response.getWriter().println(str);
    18     }

    19 }

     2. 修改后的scrollpagination

     1 /*
     2  **    Anderson Ferminiano
     3  **    contato@andersonferminiano.com -- feel free to contact me for bugs or new implementations.
     4  **    jQuery ScrollPagination
     5  **    28th/March/2011
     6  **    http://andersonferminiano.com/jqueryscrollpagination/
     7  **    You may use this script for free, but keep my credits.
     8  **    Thank you.
     9  */
    10 
    11 (function ($) {
    12 
    13 
    14     $.fn.scrollPagination = function (options) {
    15         var opts = $.extend($.fn.scrollPagination.defaults, options||{});
    16         var target = opts.scrollTarget;
    17         if (target == null) {
    18             target = obj;
    19         }
    20         opts.scrollTarget = target;
    21         return this.each(function () {
    22             $.fn.scrollPagination.init($(this), opts);
    23         });
    24 
    25     };
    26 
    27     $.fn.stopScrollPagination = function () {
    28         return this.each(function () {
    29             $(this).attr('scrollPagination', 'disabled');
    30         });
    31 
    32     };
    33 
    34     $.fn.scrollPagination.loadContent = function (obj, opts) {
    35         var target = opts.scrollTarget;
    36         var mayLoadContent = $(target).scrollTop() + opts.heightOffset >= $(document).height() - $(target).height();
    37         if (mayLoadContent) {
    38             if (opts.beforeLoad != null) {
    39                 opts.beforeLoad();
    40             }
    41             $(obj).children().attr('rel', 'loaded');
    42             $.ajax({
    43                 type:'POST',
    44                 url:opts.contentPage,
    45                 data:opts.contentData,
    46                 success:function (data) {
    47                     //call your own function to load the content
    48                     opts.loader(data);
    49                     var objectsRendered = $(obj).children('[rel!=loaded]');
    50 
    51                     if (opts.afterLoad != null) {
    52                         opts.afterLoad(objectsRendered);
    53                     }
    54                 },
    55                 dataType:opts.dataType
    56             });
    57         }
    58 
    59     };
    60 
    61     $.fn.scrollPagination.init = function (obj, opts) {
    62         var target = opts.scrollTarget;
    63         $(obj).attr('scrollPagination', 'enabled');
    64 
    65         $(target).scroll(function (event) {
    66             if ($(obj).attr('scrollPagination') == 'enabled') {
    67                 $.fn.scrollPagination.loadContent(obj, opts);
    68             }
    69             else {
    70                 event.stopPropagation();
    71             }
    72         });
    73 
    74         $.fn.scrollPagination.loadContent(obj, opts);
    75 
    76     };
    77 
    78     $.fn.scrollPagination.defaults = {
    79         'contentPage':null,
    80         'contentData':{},
    81         'beforeLoad':null,
    82         'afterLoad':null,
    83         'scrollTarget':null,
    84         'heightOffset':0,
    85         //Add
    86         'dataType':null,
    87         'loader':function(data){}
    88     };

    89 })(jQuery);

    3. Page

     1 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
     2 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
     3 <html>
     4 <head>
     5     <title>Jquery Scroll Pagination</title>
     6     <script type="text/javascript" src="scripts/jquery.js"></script>
     7     <script type="text/javascript" src="scripts/scrollpagination.js"></script>
     8     <script type="text/javascript">
     9         $(function () {
    10             $('#content').scrollPagination({
    11                 'contentPage':'pagination',
    12                 'contentData':{},
    13                 'scrollTarget':$(window),
    14                 'heightOffset':10,
    15                 'beforeLoad':function () {
    16                     $('#loading').fadeIn();
    17                 },
    18                 'afterLoad':function (elementsLoaded) {
    19                     $('#loading').fadeOut();
    20                     var i = 0;
    21                     if ($('#content').children().size() > 100) {
    22                         $('#nomoreresults').fadeIn();
    23                         $('#content').stopScrollPagination();
    24                     }
    25                 },
    26                 'dataType':'json',
    27                 'loader':function (data) {
    28                     $.each(data.root,function(idx,item){
    29                         $('#content').append("<li><p>" + item.content + "</p></li>");
    30                     });
    31                 }
    32             });
    33 
    34         });
    35     </script>
    36 </head>
    37 <body>
    38 <div id="scrollpaginationdemo">
    39     <ul id="content">
    40         <c:forEach var="item" items="${content}">
    41             <li>
    42                 <p>${item}</p>
    43             </li>
    44         </c:forEach>
    45     </ul>
    46     <div class="loading" id="loading">Wait a moment... it's loading!</div>
    47     <div class="loading" id="nomoreresults">Sorry, no more results for your pagination demo.</div>
    48 </div>
    49 </body>

    50 </html> 

    参考:Demo
  • 相关阅读:
    nodeJs小练习之爬取北京昌平区房价
    2016,加油,奋斗
    1339 字符串王国的种族
    1333 明信片和照片
    1316 你能知道这是几进制数?
    1309 简化版九宫格
    1295 爱翻译
    1288 幸运转盘(一)
    1287 孙武练兵
    1284 喜羊羊的新年礼物
  • 原文地址:https://www.cnblogs.com/zhuyoufeng/p/2430967.html
Copyright © 2020-2023  润新知