基于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 相关文章推荐
在js文件中写el表达式取不到值的原因及解决方法
Dec 23 Javascript
Javascript中的Array数组对象详谈
Mar 03 Javascript
基于jQuery实现的扇形定时器附源码下载
Oct 20 Javascript
javascript每日必学之基础入门
Feb 16 Javascript
非常实用的js验证框架实现源码 附原理方法
Jun 08 Javascript
喜大普奔!jQuery发布 3.0 最终版
Jun 12 Javascript
JS验证不重复验证码
Feb 10 Javascript
解决Vue+Element ui开发中碰到的IE问题
Sep 03 Javascript
vue实现自定义日期组件功能的实例代码
Nov 06 Javascript
关于vue状态过渡transition不起作用的原因解决
Apr 09 Javascript
vue中v-show和v-if的异同及v-show用法
Jun 06 Javascript
vue3中的组件间通信
Mar 31 Vue.js
利用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
实例(Smarty+FCKeditor新闻系统)
2007/01/02 PHP
qq登录,新浪微博登录接口申请过程中遇到的问题
2014/07/22 PHP
PHP对文件进行加锁、解锁实例
2015/01/23 PHP
php查询相似度最高的字符串的方法
2015/03/12 PHP
php获取给定日期相差天数的方法分析
2017/02/20 PHP
JavaScript DOM学习第一章 W3C DOM简介
2010/02/19 Javascript
非常有用的40款jQuery 插件推荐(系列二)
2011/12/25 Javascript
让alert不出现弹窗的两种方法
2014/05/18 Javascript
一个支持任意尺寸的图片上下左右滑动效果
2014/08/24 Javascript
一款由jquery实现的整屏切换特效
2014/09/15 Javascript
Javascript字符串浏览器兼容问题分析
2014/12/01 Javascript
深入理解JavaScript中的箭头函数
2015/07/28 Javascript
超实用的JavaScript表单代码段
2016/02/26 Javascript
ClearTimeout消除闪动实例代码
2016/02/29 Javascript
jquery实现表格中点击相应行变色功能效果【实例代码】
2016/05/09 Javascript
基于HTML5上使用iScroll实现下拉刷新,上拉加载更多
2016/05/21 Javascript
jQuery模拟Marquee实现无缝滚动效果完整实例
2016/09/29 Javascript
基于jPlayer三分屏的制作方法
2016/12/21 Javascript
详解Vue2.0配置mint-ui踩过的那些坑
2018/04/23 Javascript
修改Nodejs内置的npm默认配置路径方法
2018/05/13 NodeJs
vue+springboot+element+vue-resource实现文件上传教程
2020/10/21 Javascript
Python通过命令开启http.server服务器的方法
2017/11/04 Python
python将txt文件读入为np.array的方法
2018/10/30 Python
解决python线程卡死的问题
2019/02/18 Python
python判断文件是否存在,不存在就创建一个的实例
2019/02/18 Python
python输出决策树图形的例子
2019/08/09 Python
django 连接数据库 sqlite的例子
2019/08/14 Python
css实例教程 一款纯css3实现的超炫动画背画特效
2014/11/05 HTML / CSS
基于canvas使用贝塞尔曲线平滑拟合折线段的方法
2018/01/10 HTML / CSS
优衣库美国官网:UNIQLO美国
2018/04/14 全球购物
进步之星获奖感言
2014/02/22 职场文书
销售口号大全
2014/06/11 职场文书
副主任竞聘演讲稿
2014/08/18 职场文书
廉政承诺书
2015/01/19 职场文书
Java spring定时任务详解
2021/10/05 Java/Android
MySQL慢查询中的commit慢和binlog中慢事务的区别
2022/06/16 MySQL