jQuery操作表格(table)的常用方法、技巧汇总


Posted in Javascript onApril 12, 2014

以下列出13个jQuery操作table常用到的功能:

1.鼠标移动行变色

$('#table1 tr').hover(function(){
    $(this).children('td').addClass('hover')
}, function(){
    $(this).children('td').removeClass('hover')
});

方法二:
$("#table1 tr:gt(0)").hover(function() { 
    $(this).children("td").addClass("hover"); 
}, function() { 
    $(this).children("td").removeClass("hover"); 
});

2.奇偶行不同颜色

$('#table1 tbody tr:odd').css('background-color', '#bbf');
$('#table1 tbody tr:even').css('background-color','#ffc');
//操作class
$("#table1 tbody tr:odd").addClass("odd");
$("#table1 tbody tr:even").addClass("even");

3.隐藏一行
$('#table1 tbody tr:eq(3)').hide();
$("#table1 tr td::nth-child(3)").hide();
$("#table1 tr").each(function(){$("td:eq(3)",this).hide()});

4.隐藏一列
$('#table1 tr td::nth-child(3)').hide();

5.删除一行
// 删除除第一行外的所有行
$('#table1 tr:not(:first)').remove();
// 删除指定行
$('#table1 tr:eq(3)').remove();

6.删除一列
// 删除除第一列外的所有列
$('#table1 tr th:not(:nth-child(1))').remove();
$('#table1 tr td:not(:nth-child(1))').remove();
// 删除第一列
$('#table1 tr td::nth-child(1)').remove();

7.得到(设置)某个单元格的值
// 设置table1,第2个tr的第一个td的值。  
$('#table1 tr:eq(1) td:nth-child(1)').html('value'); 
// 获取table1,第2个tr的第一个td的值。
$('#table1 tr:eq(1) td:nth-child(1)').html();

8.插入一行
// 在第二个tr后插入一行
$('<tr><td>插入3</td><td>插入</td><td>插入</td><td>插入</td></tr>').insertAfter($('#table7 tr:eq(1)'));

9.获取每一行指定的单元格的值
var arr = [];
$('#table1 tr td:nth-child(1)').each(function (key, value) {
   arr.push($(this).html());
});
var result = arr.join(',');

10.全选或全不选
//方法零:
$('#all').on('click', function () {
    $('input.checkSub').prop('checked', this.checked); // 给当前一起绑定的子选择添加效果
});
//方法一:
//全选或全不选 此传入的参数为event 如:checkAll(event)
function checkAll(evt){
 evt=evt?evt:window.event;
 var chall=evt.target?evt.target:evt.srcElement;
 var tbl=$("#table1");
 var trlist=tbl.find("tr");
 for(var i=1;i<trlist.length;i++){
  var tr=$(trlist[i]);
  var input=tr.find("INPUT[type='checkbox']");
  input.attr("checked",chall.checked);
 }
}
//方法二:
//全选或全不选 此传入的参数为this 如:checkAll(this)
function checkAll(evt){
 var tbl=$("#table1");
 var trlist=tbl.find("tr");
 for(var i=1;i<trlist.length;i++){
  var tr=$(trlist[i]);
  var input=tr.find("INPUT[type='checkbox']");
  input.attr("checked",evt.checked);
 }
}
//方法三:
//全选或全不选 此传入的参数为this 如:checkAll(this)
function checkAll(evt){
    $("#table1 tr").find("input[type='checkbox']").each(function(i){
     $(this).attr("checked",evt.checked)
    });
}
//方法四:
//全选或全不选 此传入的参数为this 如:checkAll(this)
function checkAll(evt){
    $("#table1 tr").find("input[type='checkbox']").attr("checked",evt.checked);
}

11.客户端动态添加行
function btnAddRow(){
    //行号是从0开始,最后一行是新增、删除、保存按钮行 故减去2
    var rownum=$("#table1 tr").length-2;
    var chk="<input type='checkbox' id='chk_"+rownum+"' name='chk_"+rownum+"'/>";
    var text="<input type='text' id='txt_"+rownum+"' name='txt_"+rownum+"' width='75px'/>";
    var sel="<select id='sel_"+rownum+"'><option value='1'>男</option><option value='0'>女</option></select>";
    var row="<tr><td>"+chk+"</td><td>"+text+"</td><td>"+sel+"</td><td>"+text+"</td><td>"+text+"</td></tr>";
    $(row).insertAfter($("#table1 tr:eq("+rownum+")"));   
}

12.客户端删除一行
每次只能删除一行,删除多行时出错
function btnDeleteRow(){
   $("#table1 tr").find("input[type='checkbox']").each(function(i){
    if($(this).attr("checked")){ 
     if(i!=0){//不能删除行标题       
     $("#table1 tr:eq("+i+")").remove();
     }
    }
   });
}
这个比上面的要好,可以一下删除多个记录
function btnDeleteRow(){
   $("#table1 tr").each(function(i){
       var chk=$(this).find("input[type='checkbox']");
       if(chk.attr("id")!="checkall"){//不能删除标题行       
     if(chk.attr("checked")){
     $(this).remove();
     }
       }
    });
}

13.客户端保存
function btnSaveClick(){
   //find()方法中我暂时不知道如何设定多个筛选条件,所以下面得不到select列表的值
   //$("#table1 tr td").find("input[type='text']" || "select").each(function(i){
   //alert($(this).val());
   //});             
   $("#table1 tr").find("td").each(function(i){
      if($(this).find("input[type='text']").length>0){
          alert($(this).find("input[type='text']").val());
      }else if($(this).find("select").length>0)
      {
          alert($(this).find("select").val());
      }
    });
}
Javascript 相关文章推荐
JavaScript 格式字符串的应用
Mar 29 Javascript
在父页面调用子页面的JS方法
Sep 29 Javascript
javascript常用函数归纳整理
Oct 31 Javascript
即将发布的jQuery 3 有哪些新特性
Apr 14 Javascript
JS模拟的Map类实现方法
Jun 17 Javascript
jQuery Easyui使用(二)之可折叠面板动态加载无效果的解决方法
Aug 17 Javascript
浅谈js中的变量名和函数名重名
Feb 13 Javascript
vue.js 上传图片实例代码
Jun 22 Javascript
基于Axios 常用的请求方法别名(详解)
Mar 13 Javascript
vue 自定义提示框(Toast)组件的实现代码
Aug 17 Javascript
vue观察模式浅析
Sep 25 Javascript
浅谈Vue static 静态资源路径 和 style问题
Nov 07 Javascript
JS获取URL中参数值(QueryString)的4种方法分享
Apr 12 #Javascript
javascript对JSON数据排序的3个例子
Apr 12 #Javascript
Js保留小数点的4种效果实现代码分享
Apr 12 #Javascript
JS判断客户端是手机还是PC的2个代码
Apr 12 #Javascript
javascript window.open打开新窗口后无法再次打开该窗口问题的解决方法
Apr 12 #Javascript
jQuery中阻止冒泡事件的方法介绍
Apr 12 #Javascript
jquery ajax应用中iframe自适应高度问题解决方法
Apr 12 #Javascript
You might like
PHP解决URL中文GBK乱码问题的两种方法
2014/06/03 PHP
Yii框架实现图片上传的方法详解
2017/05/20 PHP
RR vs IO BO3 第二场2.13
2021/03/10 DOTA
javascript 打印内容方法小结
2009/11/04 Javascript
Javascript 多浏览器兼容总结(实战经验)
2013/10/30 Javascript
jquery数组封装使用方法分享(jquery数组遍历)
2014/03/25 Javascript
javascript替换已有元素replaceChild()使用介绍
2014/04/03 Javascript
jquery在ie7下选择器的问题导致append失效的解决方法
2016/01/10 Javascript
JS+HTML5手机开发之滚动和惯性缓动实现方法分析
2016/06/12 Javascript
js判断数组key是否存在(不用循环)的简单实例
2016/08/03 Javascript
jQuery  ready方法实现原理详解
2016/10/19 Javascript
巧用数组制作图片切换js代码
2016/11/29 Javascript
详解如何用babel转换es6的class语法
2018/04/03 Javascript
Vue 处理表单input单行文本框的实例代码
2019/05/09 Javascript
layui实现数据分页功能
2019/07/27 Javascript
layer ui插件显示tips时,修改字体颜色的实现方法
2019/09/11 Javascript
关于vue2强制刷新,解决页面不会重新渲染的问题
2019/10/29 Javascript
electron+vue实现div contenteditable截图功能
2020/01/07 Javascript
基于JavaScript实现简单抽奖功能代码实例
2020/10/20 Javascript
全网小程序接口请求封装实例代码
2020/11/06 Javascript
[49:30]DOTA2-DPC中国联赛正赛 Dragon vs Dynasty BO3 第二场 3月4日
2021/03/11 DOTA
python将多个文本文件合并为一个文本的代码(便于搜索)
2011/03/13 Python
Python编程实现删除VC临时文件及Debug目录的方法
2017/03/22 Python
好的Python培训机构应该具备哪些条件
2018/05/23 Python
在python中利用KNN实现对iris进行分类的方法
2018/12/11 Python
python直接获取API传递回来的参数方法
2018/12/17 Python
对python For 循环的三种遍历方式解析
2019/02/01 Python
python3连接mysql获取ansible动态inventory脚本
2020/01/19 Python
在pycharm创建scrapy项目的实现步骤
2020/12/01 Python
体育教育毕业生自荐信
2013/11/21 职场文书
大学生演讲稿范文
2014/01/11 职场文书
十佳文明家庭事迹
2014/05/25 职场文书
最美乡村医生事迹材料
2014/06/02 职场文书
Nginx配置80端口访问8080及项目名地址方法解析
2021/03/31 Servers
Spring Cloud Gateway去掉url前缀
2021/07/15 Java/Android
Python实现GIF动图以及视频卡通化详解
2021/12/06 Python