html表格cell合并插件
数据展示时需要合并部分数据自己写了一个简单插件
合并前:

合并后:

调用示例:
var trs = $('table#dataList tbody tr').not('#demo').get();
var cellMerger = new CellMerger();
//合并大区
cellMerger.merge(trs, new Array('MSGNUMBER','LARGEAREA'), new Array('LARGEAREA'));
cellMerger.merge(trs, new Array('MSGNUMBER'), new Array('option','statusName','TITLE','MSGNUMBER','CREATEOWNER','CTIME'));
参数说明:
第一个参数是要处理合并的行, 第二个参数是合并条件, 比如列1和列2对应值相等什么的, 支持多条件, 第三个参数是要合并的列
合并插件:
function CellMerger(){
}
CellMerger.prototype.merge = function (trs, needIndexs, mergedIndexes){
var mergeds = new Array();
for(x in mergedIndexes){
mergeds.push("td[index="+mergedIndexes[x]+"]");
}
var needs = new Array();
for(x in needIndexs){
needs.push("td[index="+needIndexs[x]+"]");
}
this.mergeCell(trs, needs, mergeds);
};
CellMerger.prototype.conditionMatch = function (targets, currents){
if(targets.length==0 && currents.length==0){
return true;
}
if(targets.length != currents.length){
return false;
}
for(x in targets){
if(targets[x]!=currents[x]){
return false;
}
}
return true;
};
CellMerger.prototype.rowspanAndRemove = function (trs, curIndex, sames, mergeds){
var rowspan=sames.length+1;
for(x in mergeds){
$(trs[curIndex]).children(mergeds[x]).attr('rowspan',rowspan);
}
for(var j=0;j<sames.length;j++){
for(x in mergeds){
$(trs[sames[j]]).children(mergeds[x]).remove();
}
}
};
CellMerger.prototype.mergeCell = function (trs, needs, mergeds){
var targets = new Array();
var curIndex = 0;
var sames = new Array();
for(var i=0;i<trs.length;i++){
var current = new Array();
for(x in needs){
current[x] = $(trs[i]).children(needs[x]).html();
}
if(targets.length == 0){
//初始化比对条件
curIndex = i;
for(x in needs){
targets[x] = $(trs[i]).children(needs[x]).html();
}
}
else{
if(this.conditionMatch(targets, current)){
sames.push(i);
//最后一条进行向前合并
if(i == trs.length-1 && sames.length>0){
this.rowspanAndRemove(trs, curIndex, sames, mergeds);
}
}
else{
//合并相似项
if(sames.length>0){
this.rowspanAndRemove(trs, curIndex, sames, mergeds);
}
//清空数组, 重置比较索引
curIndex = i;
sames = new Array();
for(x in needs){
targets[x] = $(trs[i]).children(needs[x]).html();
}
}
}
}
};
html表格cell合并插件的更多相关文章
- ASP.NET中重复表格列合并的实现方法(转自脚本之家)
这几天做一个项目有用到表格显示数据的地方,客户要求重复的数据列需要合并,就总结了一下.NET控件GridView 和 Repeater 关于重复数据合并的方法. 这是合并之前的效果: 合并之后的效果图 ...
- 支持10种格式的 HTML 表格导出 jQuery 插件
HTML 表格导出 jQuery 插件可以帮助用户导出 HTML 表格到 JSON.XML.PNG.CSV.TXT.SQL.MS-Word.MS-Excel.MS-PowerPoint 和 PDF 格 ...
- ExtJS4.2学习(13)基于表格的扩展插件---rowEditing
鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-24/182.html --------------- ...
- CSS之表格边框合并、兄弟标签外边距合并、父子标签的外边距合并
本文内容: 表格边框合并 兄弟标签外边距合并 父子标签的外边距合并 首发日期:2018-05-01 表格边框合并: 发生情况: 当设置了cellpadding="0" cellsp ...
- JS动态生成表格后 合并单元格
JS动态生成表格后 合并单元格 最近做项目碰到表格中的单元格合并的问题,需求是这样的,首先发ajax请求 请求回来后的数据 动态生成表格数据,但是生成后如果编号或者(根据其他的内容)有相同时,要合并单 ...
- 适用于iview的表格转Excel插件
在网上找的一个表格转excel插件,经过修改后使其适用于iview中的table组件 let idTmr; const getExplorer = () => { let explorer = ...
- Bootstrap-table实现动态合并相同行(表格同名合并)
写在前面: 有时候表格的需求就是奇奇怪怪的,最近要做的表格需要实现当紧挨着的记录的某一列的行元素内容相同,就将其合并.要是不是相同的就不合并.如果表格数据的顺序不需要被改变,这个样子是可以很简单就完成 ...
- IOS tableView 去除分割线 和 不允许选中表格cell
//去除分割线 self.tableView.backgroundColor=[UIColor colorWithRed:///255.0 alpha:1.0]; self.tableView.sep ...
- jQuery 表格隔行变色插件
jQuery提供了用于扩展jQuery功能的方法,即jQuery.fn.extend()方法和jQuery.extend()方法. 基本的JS框架代码如下: ;(function($) { $.fn. ...
随机推荐
- css 多栏自适应布局
在页面重构中,我们经常会需要实现多栏布局,例如n栏固定宽度 + m栏自适应宽度的组合,绝对布局+padding+百分比宽度是容易想到的比较暴力的解决方法,但是作为未来的"工程师", ...
- 通过javascript库JQuery实现页面跳转功能代码
通过javascript库JQuery实现页面跳转功能代码的四段代码实例如下. 实例1: 1 2 3 4 $(function(){ var pn = $("#gotopagenum&quo ...
- What are TCHAR, WCHAR, LPSTR, LPWSTR, LPCTSTR (etc.)?
转自: http://www.codeproject.com/Articles/76252/What-are-TCHAR-WCHAR-LPSTR-LPWSTR-LPCTSTR-etc 解释的超详细!! ...
- 绑定本地Service并与之通信
绑定Service需要调用 public boolean bindService (Intent service, ServiceConnection conn, int flags): 传入一个Se ...
- Mysql备份数据库的一种方法
今天添加了一个数据库自动备份的模块,mysql数据备份的方法有很多,可以对单个数据库备份,可以多个数据库备份,也可以对某一个表进行备份,可以只备份数据库的结构不备份数据,可以根据需要做不同处理,正好现 ...
- django 学习点滴
django连接数据库要安装第三方包,比如mysql的就是 python-mysqldb, 用apt-cache search python-mysql 搜索一下. django的project可以放 ...
- ubuntu基本使用
sudo nautilus xxx指定目录去打开 这个命令就是以root权限打开一个窗口,来管理文件
- 网站开发常用jQuery插件总结(11)折叠插件Akordeon
实现折叠菜单,可以完全不使用插件.如果使用jquery的话,实现起来也比较简单,我们只需要定义折叠菜单的样式,然后使用jquery中的渐隐渐现就可以了.如果我们自己写折叠菜单,可以方便的使用我们自己的 ...
- php MVC 及例子解释
根据http://www.21ds.net/article/4/453改写: MVC模式在网站架构中十分常见.它允许我们建立一个三层结构的应用程式,从代码中分离出有用的层,帮助设计师和开发者协同工作以 ...
- overflow:hidden真的失效了吗
项目中常常有同学遇到这样的问题,现象是给元素设置了overflow:hidden,但超出容器的部分并没有被隐藏,难道是设置的hidden失效了吗? 其实看似不合理的现象背后都会有其合理的解释. 我们知 ...