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 学习第六课 实现一个Ajax的TreeView
May 17 Javascript
JS实现将人民币金额转换为大写的示例代码
Feb 13 Javascript
JS 删除字符串最后一个字符的实现代码
Feb 20 Javascript
JS动画效果打开、关闭层的实现方法
May 09 Javascript
IE8下jQuery改变png图片透明度时出现的黑边
Aug 30 Javascript
分享10个优化代码的CSS和JavaScript工具
May 11 Javascript
jquery.serialize() 函数语法及简单实例
Jul 08 Javascript
ionic在开发ios系统微信时键盘挡住输入框的解决方法(键盘弹出问题)
Sep 06 Javascript
mui上拉加载功能实例详解
Apr 13 Javascript
vue移动端项目缓存问题实践记录
Oct 29 Javascript
手把手教你实现 Promise的使用方法
Sep 02 Javascript
js实现移动端轮播图滑动切换
Dec 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
PHP随机数 C扩展随机数
2016/05/04 PHP
PHP 5.6.11中CURL模块问题的解决方法
2016/08/08 PHP
thinkphp整合微信支付代码分享
2016/11/24 PHP
php获取数据库中数据的实现方法
2017/06/01 PHP
PHP结合jquery ajax实现上传多张图片,并限制图片大小操作示例
2019/03/01 PHP
javascript模仿msgbox提示效果代码
2008/06/10 Javascript
javascript window对象属性整理
2009/10/24 Javascript
JSQL SQLProxy 的 php 版本代码
2010/05/05 Javascript
简单的jquery拖拽排序效果实现代码
2011/09/20 Javascript
关于jQuery对象数据缓存Cache原理以及jQuery.data详解
2013/04/07 Javascript
js获取元素到文档区域document的(横向、纵向)坐标的两种方法
2013/05/17 Javascript
解析JavaScript中的标签语句
2013/06/19 Javascript
通过js为元素添加多项样式,浏览器全兼容写法
2014/08/30 Javascript
谈谈Jquery中的children find 的区别有哪些
2015/10/19 Javascript
JavaScript如何实现在文本框(密码框)输入提示语
2015/12/25 Javascript
Javascript中的Prototype到底是什么
2016/02/16 Javascript
javascript如何创建对象
2016/08/29 Javascript
详解如何解决Vue和vue-template-compiler版本之间的问题
2018/09/17 Javascript
详解如何搭建mpvue框架搭配vant组件库的小程序项目
2019/05/16 Javascript
js微信分享接口调用详解
2019/07/23 Javascript
jQuery表单选择器用法详解
2019/08/22 jQuery
[45:56]Ti4正赛第一天 VG vs NEWBEE 3
2014/07/19 DOTA
[48:48]完美世界DOTA2联赛PWL S3 Magama vs GXR 第一场 12.19
2020/12/24 DOTA
Python中操作文件之write()方法的使用教程
2015/05/25 Python
Python+matplotlib实现填充螺旋实例
2018/01/15 Python
基于TensorFlow常量、序列以及随机值生成实例
2020/01/04 Python
基于python实现删除指定文件类型
2020/07/21 Python
QT5 Designer 打不开的问题及解决方法
2020/08/20 Python
韩国休闲女装品牌网站:ANAIS
2016/08/24 全球购物
最新自我评价范文
2013/11/16 职场文书
安全资金保障制度
2014/01/23 职场文书
小学生感恩演讲稿
2014/04/25 职场文书
2015年业务员工作总结范文
2015/04/07 职场文书
房贷收入证明范本
2015/06/12 职场文书
使用Selenium实现微博爬虫(预登录、展开全文、翻页)
2021/04/13 Python
SpringMVC 整合SSM框架详解
2021/08/30 Java/Android