jquery分页优化操作实例分析


Posted in jQuery onAugust 23, 2019

本文实例讲述了jquery分页优化操作。分享给大家供大家参考,具体如下:

前言

上次写了博客 jquery分页显示,文章的jquery分页方式虽然可以通过js实现分页,但是也存在明显的弊端。

该篇文章的思路是,每次通过ajax请求获取到记录,然后通过判断当前页面,显示或者隐藏记录,以实现分页效果。但是这种方式,每次切换分页都需要从新请求一次记录,频繁的查询数据库。

下面提供一种,只需要加载一次(查询一次数据库)就能实现分页的思路。我们加载记录之后,生成所有的分页并隐藏,然后默认显示第一页。切换分页通过,分页div的显示和隐藏来实现。

创建数据库语句

CREATE TABLE `news` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `title` varchar(255) NOT NULL,
 `time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=201 DEFAULT CHARSET=utf8

记录查询页面

test.php

<?php
header("Content-Type:text/html;Charset=utf-8");
$mysqli = new mysqli("localhost","root","","test");
$mysqli->set_charset("utf8");
$query = $mysqli->query("SELECT * FROM news");
$res = $query->fetch_all(MYSQLI_ASSOC);
echo json_encode($res);

分页显示页面

index.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style type="text/css">
    .page{
      width: 1000px;
      margin-left: auto;
      margin-right: auto;
      text-align:center;
      display:none;
    }
  </style>
</head>
<body>
  <div id="listTag">
  </div>
</body>
<script type="text/javascript" src="http://localhost/jquery/jquery.js"></script>
<script type="text/javascript">
  $(function(){
    var avgNum = 18; //每页显示18条记录
    $.ajax({
      type:"GET",
      url:"http://localhost/test.php",
      dataType:"json",
      success:function(data){
        var totalPage = data.length;  //获取总的记录数
        var pageNum = Math.ceil(totalPage/avgNum); //计算得到页数
        var content = '';
        for(var i=1;i<=pageNum;i++){
          content += '<div id="page'+i+'" class="page"><ul>';
          for(var j=((i-1)*avgNum);j<(i*avgNum)&&j<totalPage;j++){
            content += '<li>'+data[j].title+'</li>';
          }
          content += '</ul>';
          content += '<hr/><div>';
          //前一页
          if(i == 1){
            content += '<<  ';
          }else{
            content += '<a href="javascript:showPage('+(i-1)+')" rel="external nofollow" rel="external nofollow" ><<</a>  ';
          }
          //后一页
          if(i == pageNum){
            content += '>>  ';
          }else{
            content += '<a href="javascript:showPage('+(i+1)+')" rel="external nofollow" rel="external nofollow" >>></a>  ';
          }
          content += '</div></div>';
        }
        //生成所有的div,并隐藏
        $("#listTag").append(content);
        showPage(1);
      }
    });
  });
  function showPage(num){
    $("#page"+num).show();
    $("#page"+num).siblings().hide();
  }
</script>
</html>

分页效果:

jquery分页优化操作实例分析

分页样式二

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style type="text/css">
    .page{
      width: 1000px;
      margin-left: auto;
      margin-right: auto;
      text-align:center;
      display:none;
    }
    .active{
      color:red;
    }
  </style>
</head>
<body>
  <div id="listTag">
  </div>
</body>
<script type="text/javascript" src="http://localhost/jquery/jquery.js"></script>
<script type="text/javascript">
  $(function(){
    var avgNum = 18; //每页显示18条记录
    $.ajax({
      type:"GET",
      url:"http://localhost/test.php",
      dataType:"json",
      success:function(data){
        var totalPage = data.length;  //获取总的记录数
        var pageNum = Math.ceil(totalPage/avgNum); //计算得到页数
        var content = '';
        for(var i=1;i<=pageNum;i++){
          content += '<div id="page'+i+'" class="page"><ul>';
          for(var j=((i-1)*avgNum);j<(i*avgNum)&&j<totalPage;j++){
            content += '<li>'+data[j].title+'</li>';
          }
          content += '</ul>';
          content += '<hr/><div>';
          //前一页
          if(i == 1){
            content += '<<  ';
          }else{
            content += '<a href="javascript:showPage('+(i-1)+')" rel="external nofollow" rel="external nofollow" ><<</a>  ';
          }
          //显示所有的页码
          for(var p=1;p<=pageNum;p++){
            content += '<a href="javascript:showPage('+p+')" rel="external nofollow" class="p'+p+'">'+p+'</a>  ';
          }
          //后一页
          if(i == pageNum){
            content += '>>  ';
          }else{
            content += '<a href="javascript:showPage('+(i+1)+')" rel="external nofollow" rel="external nofollow" >>></a>  ';
          }
          content += '</div></div>';
        }
        //生成所有的div,并隐藏
        $("#listTag").append(content);
        showPage(1);
      }
    });
  });
  function showPage(num){
    $("#page"+num).show();
    $("#page"+num).siblings().hide();
    $(".p"+num).addClass("active");
    $(".p"+num).siblings().removeClass("active");
  }
</script>
</html>

显示效果

jquery分页优化操作实例分析

希望本文所述对大家jQuery程序设计有所帮助。

jQuery 相关文章推荐
jQuery插件FusionCharts绘制的2D帕累托图效果示例【附demo源码】
Mar 28 jQuery
利用jQuery解析获取JSON数据
Apr 08 jQuery
JQuery Ajax 异步操作之动态添加节点功能
May 24 jQuery
jQuery扇形定时器插件pietimer使用方法详解
Jul 18 jQuery
jQuery EasyUI的TreeGrid查询功能实现方法
Aug 08 jQuery
jquery引入外部CDN 加载失败则引入本地jq库
May 23 jQuery
jQuery仿移动端支付宝键盘的实现代码
Aug 15 jQuery
jQuery实现的简单日历组件定义与用法示例
Dec 24 jQuery
jquery实现的放大镜效果示例
Feb 24 jQuery
jQuery 选择方法及$(this)用法实例分析
May 19 jQuery
jQuery 实现扁平式小清新导航
Jul 07 jQuery
jQuery实现开关灯效果
Aug 02 jQuery
jquery实现的分页显示功能示例
Aug 23 #jQuery
jQuery表单选择器用法详解
Aug 22 #jQuery
详解webpack引用jquery(第三方模块)的三种办法
Aug 21 #jQuery
jquery树形插件zTree高级使用详解
Aug 16 #jQuery
jQuery zTree树插件的使用教程
Aug 16 #jQuery
jQuery zTree插件快速实现目录树
Aug 16 #jQuery
jQuery zTree插件使用简单教程
Aug 16 #jQuery
You might like
PHP语法速查表
2007/01/02 PHP
php array_merge下进行数组合并的代码
2008/07/22 PHP
Zend Framework缓存Cache用法简单实例
2016/03/19 PHP
php中namespace及use用法分析
2016/12/06 PHP
javascript中巧用“闭包”实现程序的暂停执行功能
2007/04/04 Javascript
js简单实现用户注册信息的校验代码
2013/11/15 Javascript
js判断浏览器版本以及浏览器内核的方法
2015/01/20 Javascript
JS获取时间的方法
2015/01/21 Javascript
Jquery简单实现GridView行高亮的方法
2015/06/15 Javascript
Highcharts入门之简介
2016/08/02 Javascript
最实用的jQuery分页插件
2016/10/09 Javascript
JS实现简单的二元方程计算器功能示例
2017/01/03 Javascript
Angular 2父子组件数据传递之@Input和@Output详解(下)
2017/07/05 Javascript
Vue.js2.0中的变化小结
2017/10/24 Javascript
原生JS使用Canvas实现拖拽式绘图功能
2019/06/05 Javascript
JavaScript面向对象中接口实现方法详解
2019/07/24 Javascript
three.js利用gpu选取物体并计算交点位置的方法示例
2019/11/25 Javascript
vuecli项目构建SSR服务端渲染的实现
2020/10/30 Javascript
[03:03]2014DOTA2西雅图国际邀请赛 Alliance战队巡礼
2014/07/07 DOTA
Python实现Pig Latin小游戏实例代码
2018/02/02 Python
python中多个装饰器的调用顺序详解
2019/07/16 Python
基于Python实现剪切板实时监控方法解析
2019/09/11 Python
python argparser的具体使用
2019/11/10 Python
python使用pyecharts库画地图数据可视化的实现
2020/03/25 Python
给Django Admin添加验证码和多次登录尝试限制的实现
2020/07/26 Python
numpy中生成随机数的几种常用函数(小结)
2020/08/18 Python
Python实现迪杰斯特拉算法并生成最短路径的示例代码
2020/12/01 Python
详解HTML5布局和HTML5标签
2020/10/26 HTML / CSS
神话般的珠宝:Ross-Simons
2020/07/13 全球购物
Groupon西班牙官方网站:在线优惠券和交易,节省高达70%
2021/03/13 全球购物
见习期自我鉴定
2014/01/31 职场文书
机关节能减排实施方案
2014/03/17 职场文书
淘宝客服工作职责
2014/07/11 职场文书
2014年教师节座谈会发言稿
2014/09/10 职场文书
六一儿童节园长致辞
2015/07/31 职场文书
golang switch语句的灵活写法介绍
2021/05/06 Golang