`

基于jQuery的实现简单的分页控件

 
阅读更多

1:效果图

2:素材

3:编码
3.1思考
需要做什么?
1:分页控件需要向后台发送请求,发送的参数包括当前页,每页显示数量,查询条件;并且获取数据加载到当前页面;
2:进行修改删除操作的时候能记住当前页;
3:查询后翻页的时候可以可以记住当前查询的条件

3.2实现
HTML

复制代码 代码如下:

<!--存储数据的容器-->
<div class="tableData">
</div>
<!--分页控件显示-->
<div class="pageBar"></div>

jQuery
为了我们的控件可以随意使用,我们将其写成插件的形式,首先搭个框架,我们将插件命名为simplePage
复制代码 代码如下:

(function($){
$.fn.simplePage=function(o){
var options={
//配置参数
};
return //sth
}
})(jQuery)

默认有哪些参数呢?
由于需要发送当前页,每页显示数量,所以需要 currentPage,pageSize 两个基本参数;
由于需要查询表格内容,所以需要一个放置查询条件的表单 form;
由于需要修改删除后记住当前页,所以需要一个标志指示当前进行的是何操作type;
为了使我们的程序更具有灵活性,加上获取数据后需要加载到的container,还有就是分页控件加载的pager,
具体如下
复制代码 代码如下:

var options={
pager: '.pager',//表格控件的容器
container: '.tableData',//放置表格数据的容器
form: '#form',//放置查询条件的表单
pageForm: '#pageForm',//放置隐藏与的Div
url: '',//发送请求的地址
currentPage: 1,
pageSize: 2
type: null,//可选:action,
pageShow:7
}

为了便于维护,我们声明一个独立的对象来进行获取数据,绑定事件的操作,我们将这个函数命名为$.page
复制代码 代码如下:

$.page = {
//
setPage: function(o){
},
//获取当前页
getCurrentPage: function(o){
},
//获取每页显示数量
getPageSize: function(o){
},
//生成发送所需要的json数据
genData: function(o){
},
//发送数据
loadData: function(o){
}
}

实现以上所声明的函数,当分页第一次加载的时候,我们需要从服务器获取总页数来生成分页控件,所以首先实现loadData函数
复制代码 代码如下:

loadData: function(o){
var that = this;
var data = that.genData(o);
$.ajax({
url: o.url,
data: data,
type: 'post',
dataType: 'html',
cache: false,
success: function(result){
var res = $(result).find('tbody').html();
var totalPage = $(result).find('#totalPage').val();
var currentPage = $(result).find('#currentPage').val();
o.currentPage=currentPage;
o.pager.empty();
$.line.setLine(totalPage,o); //调用生成分页控件的函数
},
error: function(){
alert("error");
}
})
}

下面我们实现上面生成分页控件的函数$.line.setLine
复制代码 代码如下:

$.line={
setLine:function(totalPage,o){
for(var i=0;i<totalPage;i++){
var a=$('<a/>').html('<span>'+(i+1)+'</span>').addClass('pageA').bind('click',function(){
var s=$(this);
s.siblings().removeClass('pageActive');
s.addClass('pageActive');
o.currentPage=s.text();
$.page.loadData(o);
});
if(o.currentPage==i+1){
a.addClass('pageActive');
}
o.pager.append(a);
}
var limit=this.getLimit(o,totalPage);
var aPage=o.pager.find('a.pageA').not('a.previous,a.nextAll,a.record');
aPage.hide();
aPage.slice(limit.start,limit.end).show();
var prev=$('<a/>').html('<span>上一页</span>').addClass('pageA previous').unbind('click').bind('click',function(){
var pageActive=o.pager.find('a.pageActive');
var s=$(this);
if(pageActive.prev().text()=='上一页'){
alert('已经是第一页!');
return false;
}
pageActive.removeClass('pageActive');
pageActive.prev().addClass('pageActive');
o.currentPage=pageActive.prev().text();
$.page.loadData(o);
});
var next=$('<a/>').html('<span>下一页</span>').addClass('pageA nextAll').unbind('click').bind('click',function(){
var pageActive=o.pager.find('a.pageActive');
var s=$(this);
if(pageActive.next().text()=='下一页'){
alert('已经是最后一页!');
return false;
}
pageActive.removeClass('pageActive');
pageActive.next().addClass('pageActive');
o.currentPage=pageActive.next().text();
$.page.loadData(o);
});
var pageActiveText=o.pager.find('a.pageActive').text();
var record=$('<a/>').html('<span>'+pageActiveText+'/'+totalPage+'</span>').addClass('pageA record');
o.pager.prepend(prev).prepend(record).append(next);
}
}

在上面的代码中我们给当前的页面加上了pageActive类,所以现在我们可以实现$.page的getCurrentPage函数,非常简单
复制代码 代码如下:

getcurrentPage: function(o){
var p = o.pager.find("a.pageActive").text();
return p;
}

接着我们实现生成json数据的genData函数,json格式为{key:value,key:value}
复制代码 代码如下:

genData: function(o){
var sdata = $.extend({}, { "currentPage": o.currentPage,
"pageSize": o.pageSize}, $.jsonObj(o.pageForm));
return sdata;
},

上面的$.jsonObj为自定义的函数,为了生成我们需要的json格式以便发送查询的数据,只支持input,select
复制代码 代码如下:

$.jsonObj = function(form){
//判断是否有序列化的东东
if (!$(form).html() || $(form).html() == null || $.trim($(form).html()) == "") {
return null;
}
var formEl = $(form).find('input[type="text"]');
var formselect = $(form).find('select');
var json = "{";
for (var i = 0; i < formEl.length - 1; i++) {
var name = formEl.eq(i).attr('name');
var val = "'" + formEl.eq(i).val() + "'";
json += name;
json += ":";
json += val;
json += ",";
}
var lname = formEl.eq(formEl.length - 1).attr('name');
var lval = "'" + formEl.eq(formEl.length - 1).val() + "'";
json += lname;
json += ":";
json += lval;
if (formselect) {
json += ",";
for (var i = 0; i < formselect.length - 1; i++) {
var name = formselect.eq(i).attr('name');
var val = "'" + formselect.eq(i).val() + "'";
json += name;
json += ":";
json += val;
json += ",";
}
var lname = formselect.eq(formselect.length - 1).attr('name');
var lval = "'" + formselect.eq(formselect.length - 1).val() + "'";
json += lname;
json += ":";
json += lval;
}
json += "}";
var jsonObj = eval("(" + json + ")")
return jsonObj;
}

接着我们为查询表单的按钮绑定事件,我们扩展下我们的$.page函数
复制代码 代码如下:

handleQueryLine:function(o){
$(o.form).find(".query").click(function(){
//$(o.pageForm).append($(o.form).clone(true));
$(o.pageForm).empty();
$(o.form).find('input[type="text"]').each(function(){
var vals = $(this).val();
var s = $(this).clone().val(vals);
$(o.pageForm).append(s);
});
$(o.form).find('select').each(function(){
var vals = $(this).val();
var s = $(this).clone().val(vals);
$(o.pageForm).append(s);
});
$.page.query(o);
});
}

ok,基本的函数已经完成,下面完成主函数
复制代码 代码如下:

$.fn.simplePage = function(os){
var options = {
pager: '.pager',//表格控件的容器
container: '.tableData',//放置表格数据的容器
form: '#form',//放置查询条件的表单
pageForm: '#pageForm',//放置隐藏与的Div
url: '',//发送请求的地址
currentPage: 1,
pageSize: 2,
type: null,//可选:action,
pageShow:7//,
};
var o = $.extend(options, os);
return this.each(function(){
o.pager = $(this).find(o.pager);
o.container = $(this).find(o.container);
//首先清除click事件
o.pager.unbind('click');
if (o.type == 'action') {
//指定的动作,比如删除时的事件,这时需要在当前页刷新数据
o.currentPage = $.page.getPageSize(o);
o.pageSize = $.page.getCurrentPage(o);
$.page.loadData(o);
return;
}
$.page.loadData(o);
$.line.handleQueryLine(o);
})
}

现在我们的分页还不是很好看,我们用firebug查看下生成的分页结构,写了如下样式
复制代码 代码如下:

.pager a {
display: block;
float: left;
width: 16px;
height: 16px;
margin: 5px;
}
.pager a.pageA{
background:url("../images/grid/page.png") no-repeat left 0px transparent;
display:inline-block;
font-size:14px;
margin:0 3px;
padding-left:6px;
text-align:center;
vertical-align:bottom;
height:auto;
width:auto;
cursor:pointer;
}
.pager a.pageA span{
background:url("../images/grid/page.png") no-repeat right 0px transparent;
display:inline-block;
height:24px;
line-height:22px;
padding-right:6px;
}
.pager a.pageActive{
background:url("../images/grid/page.png") no-repeat left -24px transparent;
}

大功告成!!
分享到:
评论

相关推荐

    基于jquery实现简单的分页控件

    《基于jQuery实现简单的分页控件》 在网页开发中,分页功能是常见的数据展示方式,尤其是在数据量较大的情况下,它可以有效地组织信息,提高用户体验。这篇文章主要介绍如何使用jQuery来实现一个简单易用的分页控件...

    基于jquery的js+ajax分页控件

    总的来说,基于jQuery的JS+Ajax分页控件通过结合JavaScript和服务器API,实现了无需刷新页面即可动态加载数据的分页功能。这既提高了性能,又提升了用户体验。开发者可以根据实际需求进行定制和扩展,比如增加翻页...

    jquery.page分页控件02.zip

    总的来说,jQuery.page分页控件是一个简洁而实用的工具,它使得在网页中实现分页功能变得简单。通过理解其内部机制和配置选项,开发者能够灵活地在项目中应用和定制分页效果,提升网页的交互性和用户体验。同时,与...

    基于jquery的分页控件(客户端控件)

    总的来说,这个基于jQuery的分页控件提供了一种高效、便捷的方式来处理数据分页,通过AJAX技术实现了无刷新的页面切换,极大地提升了用户体验。结合适当的前端框架和后端API,可以轻松地将其整合到各种Web应用中。...

    JQuery autocomplete Ajax分页控件

    在描述中提到的"JQuery autocomplete ajax分页",意味着这个实现增加了分页功能。分页是处理大量数据的常用方法,它可以将数据分成多个部分,每次只加载一部分到前端,这样可以减少一次性加载所有数据带来的性能问题...

    jquery.page分页控件.zip

    **jQuery.page分页控件详解** 在Web开发中,数据量较大的页面往往需要实现分页功能,以便用户能够逐页浏览信息,提高用户体验。jQuery.page是一个轻量级、易用的JavaScript插件,用于在网页中实现高效且美观的分页...

    js jquery实现table假分页

    4. **分页控件**:创建分页按钮,如“上一页”、“下一页”和页码选择器。这些可以通过HTML和CSS实现,然后用jQuery绑定点击事件。 5. **事件监听**:使用jQuery的`click`事件监听分页按钮,当用户点击时,根据选择...

    基于JQuery的datagrid分页数据实现

    本项目"基于JQuery的datagrid分页数据实现"就是针对这一需求提供的一种解决方案。这个小程序利用SSH2(Struts2、Spring、Hibernate)框架,结合Maven构建工具,实现了通过jQuery的datagrid插件进行Ajax分页加载数据...

    jquery分页控件.rar

    jQuery分页控件是一种用于处理大量数据并分批次显示的交互组件,它简化了前端开发者的工作,通过简单的API调用就能实现强大的分页功能。在这个项目中,我们看到的"jquery分页控件.rar"包含了运行一个基本分页控件所...

    基于jquery制作采用Twitter分页样式的ajax分页控件源码.zip

    下面将详细解析这个jQuery分页控件的实现原理和使用方法。 一、jQuery基础 jQuery是一个流行的JavaScript库,它简化了DOM操作、事件处理、动画效果和Ajax交互。在本项目中,jQuery用于快速、高效地操纵页面元素,...

    Jquery分页控件

    **jQuery分页控件**是前端开发中常用的一种组件,它能够帮助用户高效地浏览大量数据,提升用户体验。在网页应用中,如果一次性加载所有数据可能会导致页面响应速度变慢,甚至消耗过多的网络资源。因此,使用分页控件...

    JQuery分页控件,提供源代码,存JS,支持任何语言

    这个JQuery分页控件正是利用了JQuery的便利性,通过简单的配置和调用,即可快速实现分页功能。它的主要特点包括: 1. **跨语言支持**:由于它是基于JavaScript的,因此可以无缝地与各种服务器端技术如PHP、ASP.NET...

    分页控件;分页控件;分页控件

    在本篇文章中,我们将深入探讨分页控件的概念、功能、设计原则以及在不同编程语言和框架中的实现。 1. 分页控件概念: 分页控件通常由一系列数字按钮组成,代表不同的页面,以及前进和后退箭头,允许用户在多个页面...

    jquery不错的分页控件实例及文档

    jQuery作为一个强大的JavaScript库,提供了丰富的插件来实现分页功能,其中之一就是“jQuery分页控件”或称“pagination”。这个控件能够帮助开发者轻松创建美观、实用的分页界面。 **一、jQuery分页插件基础概念**...

    C#超级好用的分页控件

    本压缩包中的“C#超级好用的分页控件v0.1源码”可能是实现以上某一种或多种方式的一个实现,具体实现细节需要查看源代码才能了解。通常,这样的控件会包含以下几个关键部分: - 数据查询逻辑:根据当前页数和每页...

    基于jquery.autocomplete的分页实现

    3. **分页UI**:在前端,我们需要显示分页控件,让用户能够选择不同的页码。这可以通过创建HTML元素(如按钮或下拉框)并绑定相应的事件处理器来实现。 4. **响应处理**:当用户切换页码时,`response`回调函数将...

    jq分页控件

    jQuery分页控件是基于jQuery构建的一种用于实现网页数据分页显示的工具。这种控件通常包含前后翻页按钮、页码选择器以及当前页数和总页数的显示,帮助用户轻松浏览大量数据。 实现jQuery分页控件的基本步骤如下: ...

Global site tag (gtag.js) - Google Analytics