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实现图片平滑滚动详解
Mar 22 jQuery
jQuery实现的手风琴侧边菜单效果
Mar 29 jQuery
使用jQuery实现页面定时弹出广告效果
Aug 24 jQuery
jQuery实现的文字逐行向上间歇滚动效果示例
Sep 06 jQuery
jQuery代码优化方法总结
Jan 29 jQuery
JQuery通过后台获取数据遍历到前台的方法
Aug 13 jQuery
Jquery和CSS实现选择框重置按钮功能
Nov 08 jQuery
jquery+php后台实现省市区联动功能示例
May 23 jQuery
jquery实现下载图片功能
Jul 18 jQuery
jQuery实现可编辑的表格
Dec 11 jQuery
基于JavaScript或jQuery实现网站夜间/高亮模式
May 30 jQuery
jQuery实现回到顶部效果
Oct 19 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
smarty实例教程
2006/11/19 PHP
NOT NULL 和NULL
2007/01/15 PHP
支持png透明图片的php生成缩略图类分享
2015/02/08 PHP
PHP屏蔽关键字实现方法
2016/11/17 PHP
JS array 数组详解
2009/03/22 Javascript
FileUpload 控件 禁止手动输入或粘贴的实现代码
2010/04/07 Javascript
JavaScript在IE和Firefox(火狐)的不兼容问题解决方法小结
2010/04/13 Javascript
javascript动态加载三
2012/08/22 Javascript
js监听鼠标点击和键盘点击事件并自动跳转页面
2014/09/24 Javascript
2种jQuery 实现刮刮卡效果
2015/02/01 Javascript
Javascript获取表单名称(name)的方法
2015/04/02 Javascript
JavaScript必知必会(五) eval 的使用
2016/06/08 Javascript
js手机号批量滚动抽奖实现代码
2020/04/17 Javascript
微信小程序中实现一对多发消息详解及实例代码
2017/02/14 Javascript
js实现倒计时关键代码
2017/05/05 Javascript
轻量级JS Cookie插件js-cookie的使用方法
2018/03/22 Javascript
node.js处理前端提交的GET请求
2019/08/30 Javascript
jquery validate 实现动态增加/删除验证规则操作示例
2019/10/28 jQuery
JavaScript 替换所有匹配内容及正则替换方法
2020/02/12 Javascript
vue 导航守卫和axios拦截器有哪些区别
2020/12/19 Vue.js
[59:32]Liquid vs Fnatic 2019国际邀请赛淘汰赛败者组BO1 8.20.mp4
2020/07/19 DOTA
[01:06:19]DOTA2-DPC中国联赛定级赛 LBZS vs SAG BO3第二场 1月8日
2021/03/11 DOTA
[32:30]夜魇凡尔赛茶话会 第一期01:谁是卧底
2021/03/11 DOTA
python多线程编程方式分析示例详解
2013/12/06 Python
使用IPython来操作Docker容器的入门指引
2015/04/08 Python
Python3下错误AttributeError: ‘dict’ object has no attribute’iteritems‘的分析与解决
2017/07/06 Python
Python异常处理知识点总结
2019/02/18 Python
python调用函数、类和文件操作简单实例总结
2019/11/29 Python
python3中pip3安装出错,找不到SSL的解决方式
2019/12/12 Python
JD Sports马来西亚:英国领先的运动鞋和运动服饰零售商
2018/03/13 全球购物
丝芙兰意大利官方网站:Sephora.it
2019/12/13 全球购物
小学生家长评语集锦
2014/01/30 职场文书
搞笑车尾标语
2014/06/23 职场文书
2014年食堂工作总结
2014/11/20 职场文书
2015年度个人业务工作总结
2015/04/27 职场文书
助学金申请书该怎么写?
2019/07/16 职场文书