基于jQuery实现表格的排序


Posted in Javascript onDecember 02, 2016
$(function(){
 //存入点击列的每一个TD的内容;
 var aTdCont = [];

 //点击列的索引值
 var thi = 0
 
 //重新对TR进行排序
 var setTrIndex = function(tdIndex){
  for(i=0;i<aTdCont.length;i++){
   var trCont = aTdCont[i];
   $("tbody tr").each(function() {
    var thisText = $(this).children("td:eq("+tdIndex+")").text();
    if(thisText == trCont){
     $("tbody").append($(this));
    }
    });  
  }
 } 
 //比较函数的参数函数
 var compare_down = function(a,b){
   return a-b;
 } 
 var compare_up = function(a,b){
   return b-a;
 } 
 //比较函数
 var fSort = function(compare){
  aTdCont.sort(compare);
 }
 //取出TD的值,并存入数组,取出前二个TD值;
 var fSetTdCont = function(thIndex){
   $("tbody tr").each(function() {
    var tdCont = $(this).children("td:eq("+thIndex+")").text();
    aTdCont.push(tdCont);
   });
 }
 //点击时需要执行的函数
 var clickFun = function(thindex){
  aTdCont = [];
  //获取点击当前列的索引值
  var nThCount = thindex;
  //调用sortTh函数 取出要比较的数据
  fSetTdCont(nThCount);
 } 
 //点击事件绑定函数
 $("th").toggle(function(){
  thi= $(this).index();
  clickFun(thi);
  //调用比较函数,降序
  fSort(compare_up);
  //重新排序行
  setTrIndex(thi);
 },function(){
  clickFun(thi);
  //调用比较函数 升序
  fSort(compare_down);
  //重新排序行
  setTrIndex(thi);
 }) 
})

主要思路:

因为JS有SORT的方法,对数组进行排序,那么通过个方法,我们就会想到数组了。

1.点标表格标头的时候,取出点击的是那一列。即列的索引值。因为下面要进行排序的就是该列。所以我要知道是点的那一列。

2.对表格的数据部分,也就是tbody部分,进行点击的列的取值,把这些值存入到一个数组当中。

3.将存入数据的数组,通过SORT方法进行排序。(这里写了两种,升,或降,因为是点击时要切换排序的方式。第一次降,第二次升,第三降,第四升,依次进行)

4.将排序好的数组的值进行遍历,在遍历过程中,和每一行TR的点击列的那个TD当中的数据进行一个比较。如果相等,就插入到tbody的最后去.(最先插入的,将是在第一行。)

以上就是本文的全部内容,希望对大家有所帮助,谢谢对三水点靠木的支持!

Javascript 相关文章推荐
动态加载外部javascript文件的函数代码分享
Jul 28 Javascript
JavaScript中判断原生函数检查function是否是原生代码
Sep 09 Javascript
jQuery的text()方法用法分析
Dec 20 Javascript
jquery实现漫天雪花飞舞的圣诞祝福雪花效果代码分享
Aug 20 Javascript
js操作数组函数实例小结
Dec 10 Javascript
浅析jQuery 3.0中的Data
Jun 14 Javascript
javascript中json基础知识详解
Jan 19 Javascript
集合Bootstrap自定义confirm提示效果
Sep 19 Javascript
VUE中的无限循环代码解析
Sep 22 Javascript
解决vue router组件状态刷新消失的问题
Aug 01 Javascript
js核心基础之闭包的应用实例分析
May 11 Javascript
JS字符串和数组如何实现相互转化
Jul 02 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(放大缩小)
Dec 02 #Javascript
关于Vue.js一些问题和思考学习笔记(1)
Dec 02 #Javascript
利用jQuery来动态为属性添加或者删除属性的简单方法
Dec 02 #Javascript
基于javascript实现的快速排序
Dec 02 #Javascript
微信公众平台开发教程(五)详解自定义菜单
Dec 02 #Javascript
基于jQuery实现滚动切换效果
Dec 02 #Javascript
遍历json 对象的属性并且动态添加属性的实现
Dec 02 #Javascript
You might like
一个简单的自动发送邮件系统(一)
2006/10/09 PHP
PHP多文件上传实例
2015/07/09 PHP
PHP 绘制网站登录首页图片验证码
2016/04/12 PHP
老生常谈php中传统验证与thinkphp框架(必看篇)
2017/06/10 PHP
对textarea框的代码调试,而且功能上使用非常方便,酷
2006/06/30 Javascript
表单JS弹出填写提示效果代码
2011/04/16 Javascript
JavaScript在for循环中绑定事件解决事件参数不同的情况
2014/01/20 Javascript
实现前后端数据交互方法汇总
2015/04/07 Javascript
javascript 中Cookie读、写与删除操作
2017/03/29 Javascript
node.js自动上传ftp的脚本分享
2018/06/16 Javascript
vue解决使用webpack打包后keep-alive不生效的方法
2018/09/01 Javascript
vue动态设置img的src路径实例
2018/09/18 Javascript
详解单页面路由工程使用微信分享及二次分享解决方案
2019/02/22 Javascript
layui的面包屑或者表单不显示的解决方法
2019/09/05 Javascript
JS实现简单随机3D骰子
2019/10/24 Javascript
vue父子模板传值问题解决方法案例分析
2020/02/26 Javascript
js实现随机点名器精简版
2020/06/29 Javascript
ES11新增的这9个新特性,你都掌握了吗
2020/10/15 Javascript
Js数组扁平化实现方法代码总汇
2020/11/11 Javascript
python脚本作为Windows服务启动代码详解
2018/02/11 Python
python3+PyQt5重新实现QT事件处理程序
2018/04/19 Python
django manage.py扩展自定义命令方法
2018/05/27 Python
python:目标检测模型预测准确度计算方式(基于IoU)
2020/01/18 Python
浅谈keras中Dropout在预测过程中是否仍要起作用
2020/07/09 Python
Python web框架(django,flask)实现mysql数据库读写分离的示例
2020/11/18 Python
美国鲍勃商店:Bob’s Stores
2018/07/22 全球购物
美国中西部家用医疗设备商店:Med Mart(轮椅、踏板车、升降机等)
2019/04/26 全球购物
牧马人澳大利亚官网:Wrangler澳大利亚
2019/10/08 全球购物
公司委托书怎么写
2014/08/02 职场文书
音乐教育专业自荐信
2014/09/18 职场文书
毕业生见习报告总结
2014/11/08 职场文书
公司备用金管理制度
2015/08/04 职场文书
企业安全生产检查制度
2015/08/06 职场文书
《穷人》教学反思
2016/02/19 职场文书
分享几个实用的CSS代码块
2022/06/10 HTML / CSS
微前端qiankun改造日渐庞大的项目教程
2022/06/21 Javascript