用于ajax动态加载数据的分页类,分页事件可以动态添加,去除了a链接中的href地址。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: 麦当苗儿 <zuojiazi@vip.qq.com> <http://www.zjzit.cn>
// +----------------------------------------------------------------------
namespace Think;
 
class customPage{
    public $firstRow// 起始行数
    public $listRows// 列表每页显示行数
    public $parameter// 分页跳转时要带的参数
    public $totalRows// 总行数
    public $totalPages// 分页总页面数
    public $rollPage   = 6;// 分页栏每页显示的页数
    public $lastSuffix = true; // 最后一页是否显示总页数
 
    private $p       'p'//分页参数名
    private $url     ''//当前链接URL
    private $nowPage = 1;
 
    // 分页显示定制
    private $config  array(
        'header' => '<span class="rows">共 %TOTAL_ROW% 条记录</span>',
        'prev'   => '上一页',
        'next'   => '下一页',
        'first'  => '1...',
        'last'   => '...%TOTAL_PAGE%',
        'theme'  => '%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END%',
    );
 
    /**
     * 架构函数
     * @param array $totalRows  总的记录数
     * @param array $listRows  每页显示记录数
     * @param array $parameter  分页跳转的参数
     */
    public function __construct($totalRows$listRows=20, $parameter array()) {
        C('VAR_PAGE') && $this->p = C('VAR_PAGE'); //设置分页参数名称
        /* 基础设置 */
        $this->totalRows  = $totalRows//设置总记录数
        $this->listRows   = $listRows;  //设置每页显示行数
        $this->parameter  = empty($parameter) ? $_GET $parameter;
        $this->nowPage    = empty($_GET[$this->p]) ? 1 : intval($_GET[$this->p]);
        $this->totalPages = ceil($this->totalRows / $this->listRows); //总页数
        if ($this->nowPage>$this->totalPages) {
            $this->nowPage = $this->totalPages ;
        }
        $this->nowPage    = $this->nowPage>0 ? $this->nowPage : 1;
        $this->firstRow   = $this->listRows * ($this->nowPage - 1);
    }
 
    /**
     * 定制分页链接设置
     * @param string $name  设置名称
     * @param string $value 设置值
     */
    public function setConfig($name,$value) {
        if(isset($this->config[$name])) {
            $this->config[$name] = $value;
        }
    }
 
    /**
     * 生成链接URL
     * @param  integer $page 页码
     * @return string
     */
    private function url($page){
        return str_replace(urlencode('[PAGE]'), $page$this->url);
    }
 
    /**
     * 组装分页链接
     * @return string
     */
    public function show() {
        if(0 == $this->totalRows) return '';     
       /* 生成URL */
        $this->parameter[$this->p] = '[PAGE]';
        $this->url = U(ACTION_NAME, $this->parameter);
        /* 计算分页信息 */
        if(!empty($this->totalPages) && $this->nowPage > $this->totalPages) {
            $this->nowPage = $this->totalPages;
        }
 
        /* 计算分页临时变量 */
        $now_cool_page      $this->rollPage/2;
        $now_cool_page_ceil ceil($now_cool_page);
        $this->lastSuffix && $this->config['last'] = $this->totalPages;
 
        //上一页
        $up_row  $this->nowPage - 1;
        $up_page $up_row > 0 ? '<a class="shang" id="'.$up_row.'"href="javascript:;">上一页</a>' '';
 
        //下一页
        $down_row  $this->nowPage + 1;
        $down_page = ($down_row <= $this->totalPages) ? '<a class="xia"  id="'.$down_row.'" href="javascript:;">下一页</a>' '';
 
        //第一页
        $the_first '';
        if($this->totalPages > $this->rollPage && ($this->nowPage - $now_cool_page) >= 1){
            $the_first '<a class="first"  id="1" href="javascript:;">第一页</a>';
        }
 
        //最后一页
        $the_end '';
        //if($this->totalPages > $this->rollPage && ($this->nowPage + $now_cool_page) < $this->totalPages){
        if($this->totalPages > $this->rollPage && ($this->nowPage + $now_cool_page) < $this->totalPages){
            $the_end '<a class="end" id="'.$this->totalRows.'" href="javascript:;">最后一页</a>';
        }
         
             
        for($i = 1; $i <= $this->rollPage; $i++){                      
                if(($this->nowPage - $now_cool_page) <= 0 ){
                    $page $i;
                }elseif(($this->nowPage + $now_cool_page - 1) >= $this->totalPages){
                    $page $this->totalPages - $this->rollPage + $i;
                }else{
                    $page $this->nowPage - $now_cool_page_ceil $i;
                }
                if($page > 0 && $page != $this->nowPage){
 
                    if($page <= $this->totalPages){
                        $link_page .= ('<li id="'.$page.'">'.$page.'</li>');
                    }else{
                        break;
                    }
                }else{
                    if($page > 0 && $this->totalPages != 1){
                        $link_page .= ('<li id="now" id="'.$page.'" class="current">'.$page.'</li>');
                    }
                }
        }
        if (!empty($link_page)) $link_page '<ul id="list">'.$link_page.'</ul>';
 
        //替换分页内容
        $page_str str_replace(
            array('%HEADER%''%NOW_PAGE%''%UP_PAGE%''%DOWN_PAGE%''%FIRST%''%LINK_PAGE%''%END%''%TOTAL_ROW%''%TOTAL_PAGE%'),
            array($this->config['header'], $this->nowPage, $up_page$down_page$the_first$link_page$the_end$this->totalRows, $this->totalPages),
            $this->config['theme']);
        $page_str = trim($page_str);
        if(!empty($page_str)) $page_str .= '<p></p><input value="" type="text"><a href="javascript:;" id="go" class="go">跳转</a>';
        return $page_str;
    }
}

customPage.class.php可添加js事件的分页类的更多相关文章

  1. A标签添加JS事件,不跳转不刷新办法

    <a href="javascript:;" id="submit-btn" class="submit-btn" title=&qu ...

  2. JS事件冒泡机制和兼容性添加事件

    本篇文章主要来讲讲 事件的冒泡机制 和 添加事件的几种方法. 一. JS的时间传递顺序: 捕获阶段 -> 目标阶段 -> 冒泡阶段 捕获阶段是指从父层往子层找.比如 <body> ...

  3. 特殊js事件

    1:点击enter事件 $(document).keypress(function(e) { // 回车键事件 if(e.which == 13) { submitForm(); } }); 2:JQ ...

  4. 文字添加响应事件,js动态加载CSS, js弹出DIV

    文字添加响应事件,js动态加载CSS, js弹出DIV <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&qu ...

  5. js 页面无滚动条添加滚轮事件

    当页面无滚动条时,滑动滚轮时window.onscroll事件不会相应,此时应该去添加滚轮事件 var MouseWheelHandler=function(e){ e.preventDefault( ...

  6. Repeater,ItemDataBound事件,获取绑定列的值,给指定列添加js方法

    protected void rp_bf_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ...

  7. JS 事件添加onclick写法注意。

    自定义函数添加onclick事件写法注意. 错误写法:element.onclick = addclass(className); 正确写法:element.onclick = function(){ ...

  8. JS事件——添加、移除事件

    element.addEventListener(event, function, useCapture) 方法用于向指定元素添加事件句柄.   event: 必须.字符串,指定事件名.注意: 例 使 ...

  9. js事件技巧方法整合

    window.resizeTo(800,600); //js设置浏览器窗口尺寸 window.open (function(){ resizeTo(640,480);//设置浏览器窗口尺寸 moveT ...

随机推荐

  1. 权限 mock location

    1.集成环信的时候,该权限报错: mock location权限是是“允许程序创建模拟位置”,主要是提供用于测试.打包的时候并不需要,所以解决办法分两步: 1.声明tools 2.添加忽略:

  2. [转载]js 程序执行与顺序实现详解

    http://www.jb51.net/article/36755.htm JavaScript是一种描述型脚本语言,由浏览器进行动态的解析与执行,浏览器对于不同的方式有不同的解析顺序,详细介绍如下, ...

  3. Spring3.2 Contorller单元测试参数问题: java.lang.NoSuchMethodException

    使用3.2做单元测试的时候发现这个问题,因为之前都是用3.0中的配置适配器使用AnnotationMethodHandlerAdapter,到3.2中升级为RequestMappingHandlerA ...

  4. 英雄无敌3开源引擎vcmi的编译安装

    TAGS: Heroes3, vcmi, opensourceDATE: 2013-08-23 vcmi是什么? vcmi 是经典的 SLG 英雄无敌3 的开源游戏引擎.原来的英雄无敌3只能在Wind ...

  5. 工具推荐:ATSCAN,功能强大的Perl脚本扫描器

    工具推荐:ATSCAN,功能强大的Perl脚本扫描器 使用perl语言编写的开源的扫描器,功能丰富强大,除了基本的tcp和udp端口扫描之外,还可以搜索wordpress.joomla等网站并进行口令 ...

  6. oracle数据类型表

    set SERVEROUTPUT ON declare v_char ); v_varchar2 ); begin v_char:='java'; v_varchar2:='java'; DBMS_O ...

  7. TCP/IP详解(整理)

    1.概述 路由器是在网络层进行联通,而网桥是在链路层联通不同的网络. IP层用ICMP来与其他主机或路由器交换错误报文和其他的重要信息.应用程序也可以访问ICMP,两个诊断工具:Ping和Tracer ...

  8. Windows Phone 8 获取设备名称

    通过使用Microsoft.Phone.Info.DeviceStatus类,我们可以获取设备的一些信息,如设备厂商,设备名称等.通过Microsoft.Phone.Info.DeviceStatus ...

  9. 打造 Laravel 优美架构 谈可维护性与弹性设计

    转载:https://juejin.im/post/5be4475c518825170559c044

  10. Laravel 程序架构设计思路:使用动作类

    当我们谈论到应用程序的架构的时候,经常会问到一个经典的问题,那就是"这段代码应该放在哪里比较好". 因为 Laravel 是一个相当灵活的框架,所以要回答这个问题其实没那么容易.我 ...