分页功能在项目开发中不可或缺,老司机操作起来就和呼吸一样简单,新手恐怕就会吃力一些。

今天我回顾了一下具体的操作步骤,决定详细的分析一下每一步的实现目的及原理。

我们会创建一个简单的json文件来模拟要从数据库请求的数据。

分页应注意下面几点问题:

1)  每页的条目数量,以下用show_per_page变量来表示

2)  页数的统计,总页数/show_per_page就是页数了

3)  利用a标签的href属性,指向对应的函数,就可以实现页面跳转

4)  定义a标签的一个longdisc属性,来判断哪个a标签被选中,给他添加active_page类名

HTML代码:

//用来存放目前的选中页

<input type='hidden' id='current_page' />

//存放显示的页面条数

<input type='hidden' id='show_per_page' />

//显示内容的盒子

<div id='content'>

</div>

//存放供选择页面的点击按钮

<div id='page_navigation'></div><br>

<br>

jQuery代码:

$(function(){

//一个ajax的get请求,获取要得到的数据

  $.get("get.json",function(data){

    var data=data;

//命名分页的条目数量

    var show_per_page = 5;

//获取到的数据条目数就是总的条目数量

    var number_of_items = data.list.length;

//遍历这些条目,创建p标签并添加到div里面

    var htmlStr="";

    $.each(data.list, function(index,obj) {

      htmlStr+="<p>"+obj+"</p>";

    });

    $("#content").append(htmlStr);

//显示的页数

    var number_of_pages = Math.ceil(number_of_items/show_per_page);

//选中页默认为0

    $('#current_page').val(0);

//显示页面的条数

    $('#show_per_page').val(show_per_page);

//拼接向前翻页字符串

    var navigation_html = '<a class="previous_link" href="javascript:previous();">Prev</a>';

//拼接将要显示的总页数的字符串,longdesc类似于alt标签属性,用作选中元素添加active_page类名

    var current_link = 0;

    while(number_of_pages > current_link){

navigation_html += '<a class="page_link" href="javascript:go_to_page(' + current_link +')" longdesc="' + current_link +'">'+     (current_link + 1) +'</a>';

      current_link++;

    }

//拼接向后翻页字符串

    navigation_html += '<a class="next_link" href="javascript:next();">Next</a>';

//将字符串添加到列表里

    $('#page_navigation').html(navigation_html);

//默认第一个页数按钮的class名字

    $('#page_navigation .page_link:first').addClass('active_page');

//将获取的条数全部隐藏

    $('#content').children().css('display', 'none');

//第一页显示的条数显示

    $('#content').children().slice(0, show_per_page).css('display', 'block');

  })

});

//向前翻页,回顾拼接字符串的点击跳转属性

function previous(){

  new_page = parseInt($('#current_page').val()) - 1;

//判断如果它前面有兄弟元素,即跳到前一页

  if($('.active_page').prev('.page_link').length==true){

    go_to_page(new_page);

  }

}

//向后翻页

function next(){

  new_page = parseInt($('#current_page').val()) + 1;

  //判断如果它后面有兄弟元素,即跳到后一页

  if($('.active_page').next('.page_link').length==true){

    go_to_page(new_page);

  }

}

//这才是最核心的函数,它带动每个翻页功能

function go_to_page(page_num){

  var show_per_page = parseInt($('#show_per_page').val());

  start_from = page_num * show_per_page;

  end_on = start_from + show_per_page;

//除了当前显示页面的数据显示,其余都隐藏

  $('#content').children().css('display', 'none').slice(start_from, end_on).css('display', 'block');

//当前点击的页面a按钮添加avtive_page类名,其余都移除

  $('.page_link[longdesc=' + page_num +']').addClass('active_page').siblings('.active_page').removeClass('active_page');

//最重要的一步

  $('#current_page').val(page_num);

}

这样代码就可以运行了

jQuery实现的简单分页功能的详细解析的更多相关文章

  1. DataGridView使用BindingNavigator实现简单分页功能

    接上一篇<DataGridView使用自定义控件实现简单分页功能>,本篇使用BindingNavigator来实现简单分页功能.其实也只是借用了一个BindingNavigator空壳, ...

  2. guitar pro系列教程(一):Guitar Pro主界面之记谱功能的详细解析【上】

    相信弹吉他的朋友们对guitar pro这款软件并不陌生,也有很多朋友用它来看谱制谱.而GP有很多实用功能,能够使我们看谱更清晰,制谱更便捷,所以让我们一起来看看吧 Guitar Pro对初学作曲,特 ...

  3. Django实现简单分页功能

    使用django的第三方模块django-pure-pagination 安装模块: pip install django-pure-pagination 将'pure_pagination'添加到s ...

  4. jQuery实现的简单小功能(实用)

    1.返回顶部使用JQuery的animate和scrollTop方法可以创建简单地返回顶部的动画: // Back to top $('#top').click(function (e) { e.pr ...

  5. DataGridView使用自定义控件实现简单分页功能

    本例子使用自定义控件方法实现,数据库使用的是SQL Server,实现过程如下: 1.新建一个自定义控件,命名为:PageControl. 2.PageControl代码如下: public part ...

  6. jQuery与直接写JS的区别详细解析

    jQuery代码具体的写法和原生的Javascript写法在执行常见操作时的区别如下所示.需要的朋友可以过来参考下     要使用jQuery,首先要在HTML代码最前面加上对jQuery库的引用,比 ...

  7. guitar pro系列教程(二):Guitar Pro主界面之记谱功能的详细解析【下】

    本章节我们接着上一章节继续讲解关于guitar pro主界面的记谱功能里的符号功能.有兴趣的朋友可以进来一起学习哦. 首先我们看下图,这是点击按钮便会弹出的一个窗口,进入这个窗口,我们会看到" ...

  8. 简单封装分页功能pageView.js

    分页是一个很简单,通用的功能.作为一个有经验的前端开发人员,有义务把代码中类似这样公共的基础性的东西抽象出来,一来是改善代码的整体质量,更重要的是为了将来做类似的功能或者类似的项目,能减少不必要的重复 ...

  9. C#设计模式总结 C#设计模式(22)——访问者模式(Vistor Pattern) C#设计模式总结 .NET Core launch.json 简介 利用Bootstrap Paginator插件和knockout.js完成分页功能 图片在线裁剪和图片上传总结 循序渐进学.Net Core Web Api开发系列【2】:利用Swagger调试WebApi

    C#设计模式总结 一. 设计原则 使用设计模式的根本原因是适应变化,提高代码复用率,使软件更具有可维护性和可扩展性.并且,在进行设计的时候,也需要遵循以下几个原则:单一职责原则.开放封闭原则.里氏代替 ...

随机推荐

  1. Java Script 学习笔记

    JS编程习惯类: 1. 命名 著名的变量命名规则 只是因为变量名的语法正确,并不意味着就该使用它们.变量还应遵守以下某条著名的命名规则: Camel 标记法 首字母是小写的,接下来的字母都以大写字符开 ...

  2. nfs 搭建

    nfs 搭建yum install nfs-utils rpcbind 修改配置文件 /etc/exports格式 每个共享的文件系统需要独立一行目录客户端主机列表需要使用空格隔开配置文件中支持通配符 ...

  3. python 学习 设计模式(goF设计模式)

    一 单例模式 用来创建单个实例 #/usr/bin/env python3 # -*- coding:utf-8 -*- # Author: ZSHAOX class Foo: instance = ...

  4. SQL 查询优化 索引优化

    sql语句优化 性能不理想的系统中除了一部分是因为应用程序的负载确实超过了服务器的实际处理能力外,更多的是因为系统存在大量的SQL语句需要优化. 为了获得稳定的执行性能,SQL语句越简单越好.对复杂的 ...

  5. wxWidgets显示视频

    wxWidgets中似乎没有专门用于显示视频的控件(虽然有wxWidgets本身的openGL控件wxGLCANVAS,但是我没有去试--) 按照这篇文章所讲的,从wxPanel继承出一个DrawPa ...

  6. POJ2796/DP/单调栈

    题目链接[http://poj.org/problem?id=2796] 题意:给出一个数列,要求在这个数列里找到一个区间,使得在这个区间里的最小值*SUM[l,r]最大. 题解:思路来源于[http ...

  7. wxpython 安装教程

    wxpython在windows 上的安装,需要在wxpython官网上下载对应的版本:Python分为32和64位系统不是系统的32位和64位 所以可以先在IDE 下输入Python看下当前是32还 ...

  8. Android之ListView异步加载图片且仅显示可见子项中的图片

    折腾了好多天,遇到 N 多让人崩溃无语的问题,不过今天终于有些收获了,这是实验的第一版,有些混乱,下一步进行改造细分,先把代码记录在这儿吧. 网上查了很多资料,发现都千篇一律,抄来抄去,很多细节和完整 ...

  9. 使用PIE对IE进行CSS3兼容介绍和经验总结

    国外团队开发的兼容插件,去年做项目时才发现,非常强大 主角:PIE.js , PIE.htc 两种方法可以实现 官方网站:http://css3pie.com/ 演示地址:http://css3pie ...

  10. 第九十六节,JavaScript概述

    JavaScript概述 学习要点: 1.什么是JavaScript 2.JavaScript特点 3.JavaScript历史 4.JavaScript核心 5.开发工具集 JavaScript诞生 ...