• jQuery Pagination 妙用


          想必很多人都用过 jQuery Pagination 插件吧,ajax 的分页,ajax 倒不是最紧要的,偶觉得最好的是分页控制的生成。

    不用再获取分页的数据后,再来计算下分页,还有显示方式,真是很麻烦。而这个东东就很好的解决了,灵活的展示控制,

    一个字,爽。可别过早高潮,也有些烦恼,如初始化时,不能做很好的控制,如页数获得,ajax请求参数控制,ajax的后退

    等,都不好动态控制。想想分页时未获得数据就要获得页数,不舒服啊。但这也有个好处,不用刷新页面。

         因此想做点改进,但也有必要的牺牲,不能只享受啊,如要动态的刷新页面。其实此插件生成的分页控制的UI是<a>标签,

    然后有个href属性,默认值是“#”当前页,其实也可以利用这个改变url分页了,最紧要的是pageIndex的获取,这个怎么访问插件代码

    里的数据呢,又没API,看来惨了。不用失望,有神丹妙药的,请看:

    例子

    View Code
     1 MBlog.plazaPageList = function(pageIndex, sorting, pageSize) {
    2 var p = $("#divPeopleList");
    3 $.ajax({
    4 type: 'GET', url: 'Share/PeopleList.ucr', data: { sort: sorting, page: pageIndex + 1 }, dataType: 'html',
    5 beforeSend: function() { loading();},
    6 success: function(res) {
    7 p.html(res);
    8 //要先加载才能 执行下面操作
    9 var h = $("#plazaPagination");
    10 var s = h.attr("count");
    11
    12 function pageselectCallback(pageIndex, jq) {
    13 //Nothing to do
    14 }
    15 h.pagination(s, {
    16 num_edge_entries: 2,
    17 num_display_entries: 6,
    18 items_per_page: pageSize,
    19 callback: pageselectCallback,
    20 current_page: pageIndex,
    21 prev_text: '上一页',
    22 next_text: '下一页',
    23 ellipse_text: '...',
    24 link_to: 'plaza.aspx?sort=' + sorting + '&page=__id__', //__id__ 会被替换成 pagination.js 里的 page_id
    25 prev_show_always: false,
    26 next_show_always: false
    27 });
    28 },
    29 error: function(e) { return false; }
    30 });
    31 }

    注:其中的 pageSelectedCallBack 函数 一定要(享受就行),要不然<a> 标签 click 事件为 javascript:void(0); 的,没法用了,失效了。

    这个主要的是要弄清楚DOM的加载顺序,只要你要用的的HTML元素已先你加载到内存就行了。

    先获得第一页(默认)数据,展示数据,然后加载 pagination 必备装备(<div class="pagination" id="plazaPagination" count="{pageCount}" ></div> 当然要了。其中 pageCount,当然在你获得分页数据的时候就有了。这里分享个分页数据及一些熟悉的封装,真的很好用,点击这里。),接着获得pageCount,初始化分页控制。

    这个就是数据和分页控制都是ajax动态生成的,保证最新,后退事件支持也好。就是喜欢这个分页UI的生成。

    给下实例:

    plaza.aspx

    View Code
     1 <head>
    2 <script type="text/javascript">
    3 $(document).ready(function() { MBlog.initPlazaPagination({PageIndex},{params},{pageSize}});
    4 </script>
    5 </head>
    6 <body>
    7 <div id="divPlaza" class="plaza">
    8 <div class="navigation">
    9 <ul>
    10 <li></li>
    11 </ul>
    12 </div>
    13 <div id="divPeopleList" class="peopleList">
    14 </div>
    15 </div>
    16 </body>

    注:其中PeopleList.ucr 就是 PeopleList.ascx,关于怎么访问者获得HTML,以及怎么复用,偶是参照老赵的文章(直接通过User Control生成HTML),这里多谢!

    PeopleList.ascx

    View Code
    1 <div>
    2 data ……
    3 </div>
    4
    5 <div class="pagination" id="plazaPagination" count="{pageCount}" >
    6 </div>
    7

    椰 完工 吃饭去鸟~~

  • 相关阅读:
    set集合 深浅拷贝
    2015 ACM/ICPC Asia Regional Changchun Online Pro 1005 Travel (Krsukal变形)
    2015 ACM/ICPC Asia Regional Changchun Online Pro 1002 Ponds(拓扑排序+并查集)
    Codeforces Round #319 (Div. 2) B Modulo Sum (dp,鸽巢)
    Codeforces Round #319 (Div. 2) C Vasya and Petya's Game (数论)
    UVA 11468 Substring (AC自动机)
    UVA11019 Matrix Matcher (AC自动机)
    UVALive 4670 Dominating Patterns (AC自动机)
    UVALive 3026 Period (KMP算法简介)
    UVA 11732 strcmp() Anyone (Trie+链表)
  • 原文地址:https://www.cnblogs.com/ranmofang/p/2378548.html
Copyright © 2020-2023  润新知