jQuery增加和删除表格项目及实现表格项目排序的方法


Posted in Javascript onMay 30, 2016

增加和删除行
jquery对表格的操作是老生常谈的问题。最近项目中用到了,今天在这里分享一下!
效果大体如下:

jQuery增加和删除表格项目及实现表格项目排序的方法

分享一下代码吧!
html

<div class="table-responsive" id="Bk_table" style="display:none;">
          <table class="table table-hover table-bordered">
            <thead>
              <tr>
                <th>
            <div class="out"> 
              <b>板块</b> 
              <em>维度</em> 
            </div>
            </th>
            </tr>
            </thead>
            <tbody>
            </tbody>
          </table>
 </div>

js操作如下:

deleteLie: function () { //删除一列
      var index = $(this).parent().index();
      for (var i = 0; i < $(".table tr").length; i++) {
        $($(".table tr")[i]).children().eq(index).remove();
      }
      if ($(".table tr").length == 1 && $(".table tr").eq(0).children().length == 1) {
        $("#Bk_table").hide();
        $(".blankShow").show();
      }
    },
    deleteOneline: function () { //删除一行
      $(this).parent().parent().remove();
      if ($(".table tr").length == 1 && $(".table tr").eq(0).children().length == 1) {
        $("#Bk_table").hide();
        $(".blankShow").show();
      }
    },
    addOneBk: function () { //增加一列
      if ($("#Bk_table").is(":hidden")) {
        $("#Bk_table").show();
      }
      if ($(".blankShow").is(":visible")) {
        $(".blankShow").hide();
      }
      var firstLie = ' <th class="hovershow"><span class="font_zs" style="display:none">中弘西岸3</span>' +
          '<input type="text" class="form-control getPrevalue" placeholder="填写板块名称" />' +
          '<a class="glyphicon glyphicon-remove bkdelete delete_lie"></a></th>';
      $(".table>thead>tr").eq(0).append(firstLie);
      var otherLie = '<td><input type="text" class="form-control" value="" placeholder="1-5之间数字" ' +
          'onkeyup="if(isNaN(value)||parseFloat(value)>5||parseFloat(value)<1)execCommand(\'undo\')"' +
          'onafterpaste="if(isNaN(value)||parseFloat(value)>5||parseFloat(value)<1)execCommand(\'undo\')" /></td>';
      $(".table>tbody>tr").append(otherLie);
    },
    addWd: function () { //增加一行
      if ($("#Bk_table").is(":hidden")) {
        $("#Bk_table").show();
      }
      if ($(".blankShow").is(":visible")) {
        $(".blankShow").hide();
      }
      var Wdhtml_1 = '<tr>' +
          ' <th scope="row" class="hovershow">' +
          '<span class="font_zs t1" style="display:none">维度三</span>' +
          '<input type="text" class="form-control getPrevalue" placeholder="填写维度名称" />' +
          '<a class="glyphicon glyphicon-remove bkdelete deleteoneline"></a>' +
          '</th>';
      var Wdhtml_2 = "";
      var LieLength = $(".table>thead>tr").children().length - 1;
      if (LieLength > 0) {
        for (var i = 0; i < LieLength; i++) {
          Wdhtml_2 = Wdhtml_2 + ' <td><input type="text" class="form-control" value="" placeholder="1-5之间数字" onkeyup="if(isNaN(value)||parseFloat(value)>5||parseFloat(value)<1)execCommand(\'undo\')" onafterpaste="if(isNaN(value)||parseFloat(value)>5||parseFloat(value)<1)execCommand(\'undo\')" /></td>';
        }
      }
      var Wdhtml_3 = '</tr>';
      var allWd = Wdhtml_1 + Wdhtml_2 + Wdhtml_3;
      $(".table>tbody").append(allWd);
}

表格排序
这个就稍微复杂点了...
主要思路:
因为JS有SORT的方法,对数组进行排序,那么通过个方法,我们就会想到数组了。
1.点标表格标头的时候,取出点击的是那一列。即列的索引值。因为下面要进行排序的就是该列。所以我要知道是点的那一列。
2.对表格的数据部分,也就是tbody部分,进行点击的列的取值,把这些值存入到一个数组当中。
3.将存入数据的数组,通过SORT方法进行排序。(这里写了两种,升,或降,因为是点击时要切换排序的方式。第一次降,第二次升,第三降,第四升,依次进行)
4.将排序好的数组的值进行遍历,在遍历过程中,和每一行TR的点击列的那个TD当中的数据进行一个比较。如果相等,就插入到tbody的最后去.(最先插入的,将是在第一行。)

$(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);
  })  
})

示例:

<style type="text/css">
*{ margin:0px; padding:0px;}
table{
  border-collapse:collapse;}
table td{
  border:1px solid #036;
  text-align:center;
  }
thead tr th{
  cursor:pointer;
  background:#066;
  color:#FFFFFF;
  }
thead tr th:hover{
  background:#369;}
</style>
<table class="tabSort" width="546" height="300" border="0" align="center" cellpadding="0" cellspacing="0">
<thead>
  <tr>
   <th scope="col">名称</th>
   <th scope="col">价格</th>
   <th scope="col">地址</th>
   <th scope="col">备注</th>
   <th scope="col">时间</th>
  </tr>
 </thead>
<tbody>
  <tr>
   <td>商品1</td>
   <td>10.5</td>
   <td> </td>
   <td> </td>
   <td> </td>
  </tr>
  <tr>
   <td>商品2</td>
   <td>11.3</td>
   <td> </td>
   <td> </td>
   <td> </td>
  </tr>
  <tr>
   <td>商品3</td>
   <td>9.8</td>
   <td> </td>
   <td> </td>
   <td> </td>
  </tr>
  <tr>
   <td>商品4</td>
   <td>12.6</td>
   <td> </td>
   <td> </td>
   <td> </td>
  </tr>
  <tr>
   <td>商品5</td>
   <td>13.9</td>
   <td> </td>
   <td> </td>
   <td> </td>
  </tr>
  <tr>
   <td>商品6</td>
   <td>18</td>
   <td> </td>
   <td> </td>
   <td> </td>
  </tr>
  <tr>
   <td>商品7</td>
   <td>21.3</td>
   <td> </td>
   <td> </td>
   <td> </td>
  </tr>
  <tr>
   <td>商品8</td>
   <td>6.5</td>
   <td> </td>
   <td> </td>
   <td> </td>
  </tr>
  <tr>
   <td>商品9</td>
   <td>7.4</td>
   <td> </td>
   <td> </td>
   <td> </td>
  </tr>
 </tbody>
</table>

效果:

jQuery增加和删除表格项目及实现表格项目排序的方法

Javascript 相关文章推荐
扩展jQuery 键盘事件的几个基本方法
Oct 30 Javascript
JavaScript 学习笔记(十二) dom
Jan 21 Javascript
使用js实现雪花飘落效果
Aug 26 Javascript
XMLHttpRequest处理xml格式的返回数据(示例代码)
Nov 21 Javascript
使用OpenLayers3 添加地图鼠标右键菜单
Dec 29 Javascript
用JS实现轮播图效果(二)
Jun 26 Javascript
详解Angular的数据显示优化处理
Dec 26 Javascript
jQuery实现的分页功能示例
Jan 22 Javascript
JavaScript fetch接口案例解析
Aug 30 Javascript
Vue组件模板及组件互相引用代码实例
Mar 11 Javascript
vue中使用v-for时为什么不能用index作为key
Apr 04 Javascript
Vue切换Tab动态渲染组件的操作
Sep 21 Javascript
使用jQuery判断浏览器滚动条位置的方法
May 30 #Javascript
JS检测移动端横竖屏的代码
May 30 #Javascript
BootStrap中Tab页签切换实例代码
May 30 #Javascript
js小数计算小数点后显示多位小数的实现方法
May 30 #Javascript
拥Bootstrap入怀——导航栏篇
May 30 #Javascript
基于Bootstrap实现tab标签切换效果
Apr 15 #Javascript
JavaScript编写带旋转+线条干扰的验证码脚本实例
May 30 #Javascript
You might like
linux命令之调试工具strace的深入分析
2013/06/03 PHP
php的array数组和使用实例简明教程(容易理解)
2014/03/20 PHP
thinkphp配置连接数据库技巧
2014/12/02 PHP
php字符串操作针对负值的判断分析
2016/07/28 PHP
php 处理png图片白色背景色改为透明色的实例代码
2018/12/10 PHP
Thinkphp 框架扩展之类库扩展操作详解
2020/04/23 PHP
javascript 操作cookies及正确使用cookies的属性
2009/10/15 Javascript
Javascript学习笔记-详解in运算符
2011/09/13 Javascript
《JavaScript高级程序设计》阅读笔记(三) ECMAScript中的引用类型
2012/02/27 Javascript
E3 tree 1.6在Firefox下显示问题的修复方法
2013/01/30 Javascript
关于innerHTML后丢失动态绑定的EVENT问题解决方法
2013/05/19 Javascript
jquery slibings选取同级其他元素的实现代码
2013/11/15 Javascript
简介JavaScript中用于处理正切的Math.tan()方法
2015/06/15 Javascript
JavaScript+html5 canvas实现图片破碎重组动画特效
2016/02/22 Javascript
jQuery ajax中使用confirm,确认是否删除的简单实例
2016/06/17 Javascript
JavaScript基于对象去除数组重复项的方法
2016/10/09 Javascript
微信js-sdk分享功能接口常用逻辑封装示例
2016/10/13 Javascript
nodejs服务搭建教程 nodejs访问本地站点文件
2017/04/07 NodeJs
Vue.js如何实现路由懒加载浅析
2017/08/14 Javascript
微信小程序之滚动视图容器的实现方法
2017/09/26 Javascript
JavaScript事件委托原理与用法实例分析
2018/06/07 Javascript
基于mpvue的简单弹窗组件mptoast使用详解
2019/08/02 Javascript
Vue实现星级评价效果实例详解
2019/12/30 Javascript
JS中this的4种绑定规则详解
2020/02/04 Javascript
简单介绍Python中的JSON使用
2015/04/28 Python
Python实现视频下载功能
2017/03/14 Python
Python应用库大全总结
2018/05/30 Python
python opencv 批量改变图片的尺寸大小的方法
2019/06/28 Python
Python 类属性与实例属性,类对象与实例对象用法分析
2019/09/20 Python
html5基础教程常用技巧整理
2013/08/20 HTML / CSS
行政管理专业推荐信
2013/11/02 职场文书
公司领导九九重阳节发言稿2014
2014/09/25 职场文书
单位授权委托书范本
2014/09/26 职场文书
民用住房租房协议书
2014/10/29 职场文书
酒店人事主管岗位职责
2015/04/11 职场文书
25句企业管理语录:助你迅速打开思路,句句经典!
2020/01/14 职场文书