table表格合并第一列中相同的内容(优化+注解)
来源:互联网 发布:卷皮网淘宝客 编辑:程序博客网 时间:2024/05/23 02:03
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Document</title><style> #table1{border-collapse: collapse;}#table1td{border: 1px solid #000;width: 50px;text-align: center;}</style><script src="http://libs.baidu.com/jquery/1.11.3/jquery.min.js"></script><script>console.log($("td").attr("rowSpan"));//所有td的rowSpan属性的默认值都为undefinedjQuery.fn.rowspan = function(colIdx) { //封装的一个JQuery小插件console.log(this); return this.each(function(){ console.log(this) var that;//用来保存含 有重复内容的列中的第一个tdconsole.log(that);//undefinedvar r = 1; $('tr').each(function() { //外层循环控制行 $('td:eq('+colIdx+')', this).each(function() { //内层循环控制列 //第一次遇到if条件时 this为 #td01 显然 undefined == “333” 结果为 false 进入else语句,把闭包中声明的变量that设置为#td01,从此以后that的值恒为#td01 //第二次遇到if条件时 this为 #td02 显然 $(“#td01”).html() == $(“#td02”).html() 结果为 true 进入if语句,把#td01的rowSpan设置为2,并隐藏#td02 //第三次遇到if条件时 this为 #td03 显然 $(“#td01”).html() == $(“#td03”).html() 结果为 true 进入if语句,把#td01的rowSpan设置为3,并隐藏#td03 // 过程:先执行1次else语句,再执行2次if语句 if ($(that).html() == $(this).html()) { r++;//遍历#td02,#td03,当遇到1个内容相等的td,rowspan=2;当遇到第2个内容相等的td,rowspan=3;...... $(that).attr("rowSpan",r);//r自增1 然后赋值给#td01的rowSpan属性 console.log(that);//#td01 $(this).hide(); //分别隐藏#td02,#td03 console.log(this);//#td02,#td03 } else { that = this;//#td01(#td02,#td03进不来) } }); }); }); } //调用jq里面自定义的方法rowspan(colIdx) $(document).on("DOMContentLoaded",function () { $("#table1").rowspan(0);//传入的参数是对应的列数从0开始 第一列合并相同 // $("#table1").rowspan(2);//传入的参数是对应的列数从0开始 第三列合并相同 }) </script></head><body><table id="table1"><tr id="tr01"><td>111</td><td>222</td><td id="td01">333</td><td></td></tr><tr><td>111</td><td>555</td><td id="td02">333</td><td></td></tr><tr><td>111</td><td>888</td><td id="td03">333</td><td></td></tr></table></html>
注解:
1、jQuery.fn是jQuery.prototype的简写,jq底层jQuery.fn = jQuery.prototype,即向jQuery对象的原型里面添加方法。通过jQuery()或者$()新建的jq对象会自动继承jQuery.prototype里面的方法;
2、新添加的方法名为 rowspan(colIdx);一劳永逸! 添加一次,后面可以直接调用rowspan()方法,如$("#table1").rowspan(0);
3、整体结构f1>f2>f3>f4,4层函数嵌套,形成3个闭包,即闭包f2,f3,f4
闭包f2内部保存的私有变量:colIdx
闭包f3内部保存的私有变量:that 和 r
闭包f4内部保存的私有变量:this (这里的this指向当前td的执行环境context,即当前td所在的tr,而f4内部的this指向#td01,#td02,#td03,即重复列当中的每一个td)
4、this的指向:
函数f1内部的this指向:即将调用rowspan()方法的对象,如$("#table1").rowspan(0);this指向$("#table1")对象
函数f2内部的this指向:undified
函数f3内部的this指向:tr
函数f4内部的this指向:#td01,#td02,#td03,即重复列当中的每一个td
每句代码的注释见上面的代码。
效果图:
阅读全文
1 0
- table表格合并第一列中相同的内容(优化+注解)
- table表格合并第一列中相同的内容!
- table表格合并第一列中相同的内容!
- jquery合并单元格(表格相邻列内容相同合并)
- 根据第一列条件合并表格中后面相同的列
- table表格合并跨行中相同元素的列
- JS table 表格相同列合并
- js实现表格table相同列合并
- table相同的列合并
- 使用jQuery实现页面表格中相同内容的行或列合并
- 使用jQuery实现页面表格中相同内容的行或列合并
- [JS&Jquery]实现页面表格中相同内容的行或列合并
- Javascript合并表格中具有相同内容的单元格
- PB中dw合并相同内容的列
- 前台页面table表格相同数据列合并
- 合并table中值相同的列
- table 合并相同的列和行
- table列的相同单元格合并
- android读写iic设备
- noip2015运输计划解题报告
- JAVA 生成动态验证码
- nodepad++ 快捷键
- 使用Fiddler实现简单手机抓包
- table表格合并第一列中相同的内容(优化+注解)
- 原生PDF转Word教程
- 立体显示简介
- Oracle—触发器(转)
- 由打开微信分享引发的activity任务栈属性探究
- ubuntu 14.04下 caffe环境中 fast rcnn安装与运行
- 14. Longest Common Prefix最长公共字符串前缀
- 让文字颜色渐变
- 影评分析初级 nltk 电影语料库