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 相关文章推荐
JavaScript调用Activex控件的事件的实现方法
Apr 11 Javascript
JQuery动态给table添加、删除行 改进版
Jan 19 Javascript
jQuery获取Select选择的Text和Value(详细汇总)
Jan 25 Javascript
JQuery 文本框回车跳到下一个文本框示例代码
Aug 30 Javascript
js实现单行文本向上滚动效果实例代码
Nov 28 Javascript
变量声明时命名与变量作为对象属性时命名的区别解析
Dec 06 Javascript
javascript圆盘抽奖程序实现原理和完整代码例子
Jun 03 Javascript
JavaScript中var关键字的使用详解
Aug 14 Javascript
JS实现颜色梯度与渐变效果完整实例
Dec 30 Javascript
JS原型与继承操作示例
May 09 Javascript
小程序跳转H5页面的方法步骤
Mar 06 Javascript
如何理解Vue前后端数据交互与显示
May 10 Vue.js
使用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
dedecms后台验证码总提示错误的解决方法
2007/03/21 PHP
WordPress自定义时间显示格式
2015/03/27 PHP
php限制ip地址范围的方法
2015/03/31 PHP
详解PHP防止盗链防止迅雷下载的方法
2017/04/26 PHP
thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结
2019/10/10 PHP
初窥JQuery(二)事件机制(2)
2010/12/06 Javascript
angular.foreach 循环方法使用指南
2015/01/06 Javascript
javascript实现了照片拖拽点击置顶的照片墙代码
2015/04/03 Javascript
ES6新特性之模块Module用法详解
2017/04/01 Javascript
JavaScript限定范围拖拽及自定义滚动条应用(3)
2017/05/17 Javascript
详解redis在nodejs中的应用
2018/05/02 NodeJs
vue和webpack项目构建过程常用的npm命令详解
2018/06/15 Javascript
Vue一次性简洁明了引入所有公共组件的方法
2018/11/28 Javascript
关于node-bindings无法在Electron中使用的解决办法
2018/12/18 Javascript
Vue.js路由实现选项卡简单实例
2019/07/24 Javascript
Selenium执行Javascript脚本参数及返回值过程详解
2020/04/01 Javascript
[01:10:16]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第一局
2016/02/27 DOTA
[02:11]2016国际邀请赛中国区预选赛全程回顾
2016/07/01 DOTA
[57:47]Fnatic vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python程序设计入门(4)模块和包
2014/06/16 Python
python字典基本操作实例分析
2015/07/11 Python
CentOS7.3编译安装Python3.6.2的方法
2018/01/22 Python
基于Django用户认证系统详解
2018/02/21 Python
Python简单实现阿拉伯数字和罗马数字的互相转换功能示例
2018/04/17 Python
对TensorFlow中的variables_to_restore函数详解
2018/07/30 Python
python被修饰的函数消失问题解决(基于wraps函数)
2019/11/04 Python
Python算法的时间复杂度和空间复杂度(实例解析)
2019/11/19 Python
pytorch模型预测结果与ndarray互转方式
2020/01/15 Python
GAP欧盟网上商店:GAP EU
2016/09/13 全球购物
Infababy英国:婴儿推车、Travel System婴儿车和婴儿汽车座椅销售
2018/05/23 全球购物
迷你分体式空调:SoGoodToBuy
2018/08/07 全球购物
社会学专业求职信
2014/07/17 职场文书
公司试用期员工自我评价
2014/09/17 职场文书
2015年幼儿园新年寄语
2014/12/08 职场文书
2015年行政人事部工作总结
2015/05/13 职场文书
十大最强岩石系宝可梦,怪颚龙实力最强,第七破坏力很强
2022/03/18 日漫