分页控件式大家在熟悉不过的控件,很多情况下都需要使用到分页控件来完成列表数据加载操作,在很多分页控件中有的编写麻烦,有的应用扩展比较复杂,有的分页控件样式比较丑陋,有的分页控件用户体验操作比较简单等等一些不符合自己的要求,在此之际为了项目需求,自己扩展一个分页控件js类,以便日后方便重用,现在分享这个控件。

分页控件分解:

1。初始化对象

2。分页控件绑定前台显示

3。异步调用获取数据

4。单击按钮回调事件

5。按钮单击事件

6。文本框输入事件

7。点击确定搜索事件。

Html代码:

<div class="pageDiv"></div>

Css样式代码:

/*分页*/
div div.pageDiv{clear:left;float:none;text-align:center;margin:0px auto;padding:20px 0;border:0px;font-size:14px;}
.pageDiv a,.pageDiv em{border: 1px solid #ccc;margin:0px 2px;padding: 2px 6px;font-style:normal;font-size:12px; border-radius:2px;}
.pageDiv a:hover{background-color:#B60000;color:#fff;}
.pageDiv font{line-height:23px;margin:0 10px 0 0}
.pageDiv a.current{background-color:#B60000;color: #FFFFFF;text-decoration: none;}
.pageDiv a.last{margin-right:20px;}
.pageDiv input {border: 1px solid #CCCCCC; margin: 0 5px;width: 40px;}
.pageDiv i { font-style: normal;}
.pageDiv b{font-weight:normal;border:solid 1px #ccc;border-radius:4px;padding:2px 6px;cursor:pointer;margin:0px 5px;}

Js代码:

1。自定义分页控件类

//分页控件 http://www.naoqiu.com
var Pager = function (config, page, fun_load, fun_error) {
var _obj;
var _this = this;
var _pageIndex = 1;
var _pageSize = 20;
var _total = 0;
var _allpage = 1;
var _ajaxUrl = '';
var _config;
var _load_img = true;
//初始化对象
this.init = function () {
if (page == undefined) return;
_obj = page.obj;
//是否显示加载推片
if (page.load_img) _load_img = page.load_img;
//分页设置
if (page.index) _pageIndex = page.index;
if (page.size) _pageSize = page.size;
if (page.total) _total = page.total;
_ajaxUrl = page.url;
_config = config;
//调用加载控件
_this.click_callback({ index: _pageIndex, size: _pageSize, total: 0 });
};
//显示
this.show = function () {
if (_obj == undefined) return;
_allpage = parseInt(_total / _pageSize) + (_total % _pageSize == 0 && _total > 0 ? 0 : 1);
//设置开始位置,和中间页中止位置
var sta = _pageIndex < 4 ? 1 : _pageIndex - 1;
var end = sta + 3 < _allpage ? sta + 3 : _allpage;
if (sta + 5 >= _allpage) {
sta = _allpage - 4 > 0 ? _allpage - 4 : 1;
}
//设置分页控件字符串
var html = ' <font>总共' + _total + '条 共 ' + _allpage + ' 页  ' + _pageSize + ' 条/页</font>';
html += ' <a href="javascript:void(0)" class="first">首页</a>';
html += ' <a href="javascript:void(0)" class="pre">上一页</a>';
for (; sta <= end; sta++) {
html += ' <a href="javascript:void(0)"' + (_pageIndex == sta ? ' class="current"' : '') + '>' + sta.toString() + '</a>';
}
if (end < _allpage) {
html += ' <a href="javascript:void(0)" ' + (end + 1 < _allpage ? 'class="omit">...</a>' : '>' + _allpage + '</a>');
}
html += ' <a href="javascript:void(0)" class="next">下一页</a>';
html += ' <a href="javascript:void(0)" class="last">尾页</a>';
html += ' <i>转到第</i><input type="text" maxlength="8" /><i>页</i><b>确定</b>';
_obj.html(html);
//设置控件事件
_obj.find('a').click(function () {
_this.click_load($(this));
});
//文本框输入事件
_obj.find('input').keyup(function (e) {
if (e.keyCode == 13) {
_obj.find('b').click();
} else if (e.keyCode < 48 || e.keyCode > 57) {
$(this).val($(this).val().match(/[1-9]\d*/i));
}
});
//搜索
_obj.find('b').click(function () {
if (_obj.find('input').val().isNumber()) {
var num = parseInt(_obj.find('input').val());
_pageIndex = num < 1 ? 1 : (num > _total ? _total : num);
_this.click_callback({ index: _pageIndex, size: _pageSize, total: _total });
} else
showMessage("请输入数字格式!");
});
}
//获取数据
this.getData = function () {
var _data = 'index=' + _pageIndex + '&size=' + _pageSize + '&total=' + _total;
if (_config) {
for (var p in _config) {
_data += '&' + p + '=' + encodeURIComponent(_config[p]);
}
}
return _data;
}
//单击按钮回调事件
this.click_callback = function (page) {
//当前可增加加载等待图片
//判断是是否需要异步请求
if (_ajaxUrl.length > 0) {
if (_load_img) _obj.before('<img src="/img/loading.gif" class="loading_img" />');
requestAPI(_ajaxUrl, _this.getData(), function (json) {
_obj.parent().find('.no_data').remove();
//清除加载图片
if (_load_img) _obj.parent().find('.loading_img').remove();
if (fun_load != undefined)
fun_load(json);
//清除加载等待
_total = json == null || json.total == null ? 0 : json.total;
if (_total == 0) {
_obj.before('<p class="no_data">暂无数据</p>');
} //重新设置控件
_this.show();
}, function (json) {
if (fun_error)
fun_error(json);
else
showMessage("加载数据有误,请重新刷新页面!");
});
} else {
if (fun_load != undefined) fun_load();
//清除加载等待
//重新设置控件
_this.show();
}
}
//按钮单击事件
this.click_load = function (obj) {
var _css = obj.attr('class');
switch (_css) {
case 'first':
{
if (_pageIndex == 1) return;
_pageIndex = 1;
} break;
case 'pre':
{
if (_pageIndex == 1) return;
_pageIndex = _pageIndex - 1;
} break;
case 'next':
{
if (_pageIndex == _allpage) return;
_pageIndex += 1;
} break;
case 'last':
{
if (_pageIndex == _allpage) return;
_pageIndex = _allpage;
} break;
case 'omit': _pageIndex += 1; break;
default: _pageIndex = parseInt(obj.html()); break;
}
//回调事件
_this.click_callback({ index: _pageIndex, size: _pageSize, total: _total });
}
//加载对象
_this.init();
} //异步提交数据
function requestAPI(requestURL, requestData, successFun, errorFun) {
    var jsonFun = new JsonFun(successFun, errorFun);
    $.ajax({
        url: requestURL,
        cache: false,
        type: "POST",
        data: requestData + "&n=" + new Date().getSeconds(),
        dataType: "json",
        success: jsonFun.success,
        error: jsonFun.error
    });
}

2. 示例:

 var _key = $('.search_txt').val() == "请输入产品名称" ? "" : $('.search_txt').val();
var pager = new Pager({ type: "list_shop", key: _key, protype: $('.select_type span font').attr('_id') }, {
url: _url,
obj: $('.pageDiv')
}, function (json) {
//绑定数据
var html = '';
$.each(json.list, function (i, item) {
html += set_row(item);
});
$('.con .content ul').remove();
$('.con .content ol').after(html);
//上下架函数
$('.content .bt_state').click(function () {
fun_info_state($(this).parent().parent().attr('_id'), $(this).attr('_state') == "1" ? 2 : 1);
});
//删除函数
$('.content .bt_del').click(function () {
fun_info_del($(this).parent().parent().attr('_id'));
});
});

3.示例图片

转载请标注来源。

另外脑球网及刚上线的网站:移动电源需要做外链留下联系方式。

基于jquery扩展漂亮的分页控件(ajax)的更多相关文章

  1. 基于存储过程的MVC开源分页控件--LYB.NET.SPPager

    摘要 现在基于ASP.NET MVC的分页控件我想大家都不陌生了,百度一下一大箩筐.其中有不少精品,陕北吴旗娃杨涛大哥做的分页控件MVCPager(http://www.webdiyer.com/)算 ...

  2. 基于存储过程的MVC开源分页控件

    基于存储过程的MVC开源分页控件--LYB.NET.SPPager 摘要 现在基于ASP.NET MVC的分页控件我想大家都不陌生了,百度一下一大箩筐.其中有不少精品,陕北吴旗娃杨涛大哥做的分页控件M ...

  3. 基于avalon+jquery做的bootstrap分页控件

    刚开始学习avalon,项目需要就尝试写了个分页控件Pager.js:基于BootStrap样式这个大家都很熟悉 在这里推荐下国产前端神器avalon:确实好用,帮我解决了很多前端问题. 不多说了,代 ...

  4. 基于Bootstrap仿淘宝分页控件实现

    .header { cursor: pointer } p { margin: 3px 6px } th { background: lightblue; width: 20% } table { t ...

  5. 基于jquery 封装的 select 小控件,解决 IE6 7 8里 select 边框 高度 无法遮挡等问题

    一.基本原理 select控件在浏览器中是个永远的痛,不同的版本解析出来的可谓五花八门.主要有以下问题: 1,IE6中无法设置高度,Z INDEX永远在最上,无法被其它层遮挡 2,IE7中可以设置高度 ...

  6. 基于jquery扩展漂亮的CheckBox

    大家都知道默认的html复选框控件样式可定义相当有限,无法满足大多用户的美观度.今天跟大家一起分享前一段时间自己编写的CheckBox控件.喜欢的朋友可以拿去使用,有什么好的建议希望你给我留言.废话不 ...

  7. 基于KO+bootstrap+MVC的分页控件

    JS: /// <reference path="../knockout-3.2.0.js" /> var ViewModel = function (data) { ...

  8. 如何Windows分页控件中增加统计功能

    在我的博客里面,很多Winform程序里面都用到了分页处理,这样可以不管是在直接访问数据库的场景还是使用网络方式访问WCF服务获取数据,都能获得较好的效率,因此WInform程序里面的分页控件的使用是 ...

  9. ajax 分页控件,基于jquery

    /* 分页插件,依赖jQuery库 version: 1.1.0 author: Harrison Cao release date: 2013-09-23 相对 v1.0版本 修正了分页居中 使用方 ...

随机推荐

  1. Myeclipse 8.5 优化设置

    1.1 更改JavaScript文件默认编码 1.2 关闭Myeclipse不需要的启动项 1.3 取消Myeclipse自动更新 1.4 关闭Myeclipse自动验证 1.5 设置Myeclips ...

  2. Windows Embedded Compact 2013 安装体验

    6月14日,微软正式发布了Windows embedded compact 2013,大家还是习惯称之为Window CE 8,公司也要开始做windows embedded compact 2013 ...

  3. 【HDOJ】4601 Letter Tree

    挺有意思的一道题,思路肯定是将图转化为Trie树,这样可以求得字典序.然后,按照trie的层次求解.一直wa的原因在于将树转化为线性数据结构时要从原树遍历,从trie遍历就会wa.不同结点可能映射为t ...

  4. freemarker得到数组的长度

    取得list的长度:${fields?size}.用?size不是用?length,代码如下所示: <#list properties as item> <#assign layer ...

  5. bzoj1003: [ZJOI2006]物流运输

    dp+最短路.暴力枚举就可以了.O(n3logn).样例中m=n然后测样例过了.然后 54行习惯性的dis[n]然后就WA了!!!. #include<cstdio> #include&l ...

  6. ORACLE DATAGURARD 折腾记二

    前文再续,书接上一回,这次折腾Data Guard的一个重要目的是利用switchover实现机器的升级,怎么switchover呢?按照我的理解,Data Guard的角色切换是这样一个过程: (1 ...

  7. mysql CMAKE 参数说明

    MySQL自5.5版本以后,就开始使用CMake编译工具了,因此,你在安装源文件中找不到configure文件是正常的.很多人下到了新版的MySQL,因为找不到configure文件,不知道该怎么继续 ...

  8. [Everyday Mathematics]20150103

    试求极限$$\bex \vlm{n} \sez{\int_1^{e^2}\sex{\frac{\ln x}{x}}^n\rd x}^\frac{1}{n}.\eex$$

  9. [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.5.2

    The elementary tensors $x\otimes \cdots \otimes x$, with all factors equal, are all in the subspace ...

  10. HDU5692 Snacks DFS+线段树

    分析:一棵以1为根的有根树,然后每个点维护从根到当前节点的路径和,当修改一个点时 只会影响的子树的和,最优值也是子树最大的值 #include <cstdio> #include < ...