一个合并表格单元格的jquery插件.提供"按行合并"与"按列合并"2个功能
使用方法:调用$.tableSpan.table_rowspan实现合并列的单元格 或 $.tableSpan.table_colspan实现合并行的单元格
一点修改: 某些情况下可能需要缩写某列,时候需要比较td的tile属性,所以增加是否需要比较title的参数
(function($){
/**
* desc : 合并指定表格(表格id为table_id)指定列(列数为table_colnum)的相同文本的相邻单元格
* @table_id 表格id : 为需要进行合并单元格的表格的id。如在HTMl中指定表格 id="data" ,此参数应为 #data
* @table_colnum : 为需要合并单元格的所在列.参考jQuery中nth-child的参数.若为数字,从最左边第一列为1开始算起;"even" 表示偶数列;"odd" 表示奇数列; "3n+1" 表示的列数为1、4、7、......
* @table_minrow ? : 可选的,表示要合并列的行数最小的列,省略表示从第0行开始 (闭区间)
* @table_maxrow ? : 可选的,表示要合并列的行数最大的列,省略表示最大行列数为表格最后一行 (开区间)
*/
$.tableSpan = $.tableSpan || {};
$.extend($.tableSpan,{
table_rowspan : function table_rowspan(table_id,table_colnum){
if(table_colnum=="even"){
table_colnum = "2n";
}else if(table_colnum=="odd"){
table_colnum = "2n+1";
}else{
table_colnum = ""+table_colnum;
}
var cols=[];
var all_row_num = $(table_id+" tr td:nth-child(1)").length;
var all_col_num = $(table_id+" tr:nth-child(1)").children().length;
if(table_colnum.indexOf("n")==-1){
cols[0] = table_colnum;
}else{
var n = 0;
var a = table_colnum.substring(0,table_colnum.indexOf("n") );
var b= table_colnum.substring(table_colnum.indexOf("n")+1);
//alert("a="+a+"b="+(b==true));
a = a?parseInt(a):1;
b = b?parseInt(b):0;
//alert(b);
while(a*n+b<=all_col_num){
cols[n] = a*n+b;
n++;
}
}
var table_minrow = arguments[2]?arguments[2]:0;
var table_maxrow = arguments[3]?arguments[3]:all_row_num+1;
var table_firsttd = "";
var table_currenttd = "";
var table_SpanNum = 0;
for(var j=0;j<cols.length;j++){
$(table_id + " tr td:nth-child(" + cols[j] + ")").slice(table_minrow,table_maxrow).each(function(i){
var table_col_obj = $(this);
if(i==0){
table_firsttd = $(this);
table_SpanNum = 1;
}else{
table_currenttd = $(this);
if(table_firsttd.text()==table_currenttd.text()){
table_SpanNum++;
table_currenttd.hide(); //remove();
table_firsttd.attr("rowSpan",table_SpanNum);
}else{
table_firsttd = $(this);
table_SpanNum = 1;
}
}
});
}
},
/**
* desc : 合并指定表格(表格id为table_id)指定行(行数为table_rownum)的相同文本的相邻单元格
* @table_id 表格id : 为需要进行合并单元格的表格的id。如在HTMl中指定表格 id="data" ,此参数应为 #data
* @table_rownum : 为需要合并单元格的所在行.参考jQuery中nth-child的参数.若为数字,从最左边第一列为1开始算起;"even" 表示偶数行;"odd" 表示奇数行; "3n+1" 表示的行数为1、4、7、......
* @table_mincolnum ? : 可选的,表示要合并行中的最小列,省略表示从第0列开始(闭区间)
* @table_maxcolnum ? : 可选的,表示要合并行中的最大列,省略表示表格的最大列数(开区间)
*/
table_colspan : function table_colspan(table_id,table_rownum){
//if(table_maxcolnum == void 0){table_maxcolnum=0;}
var table_mincolnum = arguments[2]?arguments[2]:0;
var table_maxcolnum;
var table_firsttd = "";
var table_currenttd = "";
var table_SpanNum = 0;
$(table_id + " tr:nth-child(" + table_rownum + ")").each(function(i){
table_row_obj = $(this).children();
table_maxcolnum = arguments[3]?arguments[3]:table_row_obj.length;
table_row_obj.slice(table_mincolnum,table_maxcolnum).each(function(i){
if(i==0){
table_firsttd = $(this);
table_SpanNum = 1;
}else if((table_maxcolnum>0)&&(i>table_maxcolnum)){
return "";
}else{
table_currenttd = $(this);
if(table_firsttd.text()==table_currenttd.text()){
table_SpanNum++;
if(table_currenttd.is(":visible")){
table_firsttd.width(parseInt(table_firsttd.width())+ parseInt(table_currenttd.width()));
}
table_currenttd.hide(); //remove();
table_firsttd.attr("colSpan",table_SpanNum);
}else{
table_firsttd = $(this);
table_SpanNum = 1;
}
}
});
});
}
});
})(jQuery);
分享到:
相关推荐
`jQuery.table.rowspan.js`是一个专为解决表格中单元格自动合并问题的jQuery插件。这个插件允许开发者在前端轻松处理复杂的表格布局,提高用户体验,同时也减轻了服务器端的计算压力。 ### 插件原理 `rowspan`属性...
在IT领域,jQuery DataTables是一款广泛使用的数据展示插件,它提供了丰富的功能,如排序、搜索、分页等。在某些场景下,我们可能需要对表格中的单元格进行合并,以便更好地展示数据,例如汇总或者分类。本篇将详细...
【Excel表格功能jQuery插件】是一款专为网页设计者打造的JavaScript库,它利用jQuery的强大功能,为网页中的表格提供了类似Excel的交互体验。这款插件允许用户在网页上实现Excel的各种常见操作,极大地提升了表格的...
至于压缩包内的文件“jquery合并单元格行”,可能是包含了一个实现这个功能的jQuery插件或者示例代码。 总的来说,合并表格行记录是通过jQuery对HTML表格进行操作的一个实用技巧,能够提升数据的可视化效果,使数据...
**知识点**: 类似于ExtGrid的jQuery网格插件,支持列宽调整、列标题合并、分页、排序等功能,数据来源可选Ajax或普通表格。 #### 16. SimpleModal **知识点**: 轻量级模态对话框插件,提供简单接口,方便创建弹出...
Flexigrid是一个类似于Ext Gird,...它具有的功能包括:可以调整列宽,合并列标题,分页,排序,显示/隐藏表格等。Flexigrid显示的数据能够通过Ajax获取或者从一个普通的表格转换。这个例子对jquery初学者有一定的帮助
1. jqGrid:这是一个强大的jQuery插件,用于在Web应用中显示和管理数据网格。它支持通过JavaScript API全面控制数据,以及服务器端排序、分页和过滤等高级功能。它还支持显示大数据集,并且具有可调整大小的列宽、...
例如,有一个很受欢迎的jQuery插件叫Bootstrap,它提供了一系列预先设计的UI组件,如导航条、按钮组、模态框等,可以帮助开发者快速创建响应式布局的网站。 在学习过程中,代码注释是非常重要的。良好的注释能让...
jQuery插件常用于表格操作、轮播图、提示框、表单验证等多种场景。了解和掌握jQuery插件开发,能够使我们在项目开发中更加灵活高效。 综上所述,jQuery插件开发是前端开发中的一项重要技能,通过熟练掌握这一技术,...
总之,jQuery 插件 TreeTable 提供了一种简便的方式,将传统的表格转变为具有树形结构的表格,便于组织和展示层次化数据,同时保持了良好的性能和多样的视觉风格。通过灵活的配置选项,开发者可以轻松地适应各种项目...
总结来说,jQuery插件为我们提供了扩展和定制功能的强大工具,zTree和EasyUI作为两个优秀的jQuery插件,分别在树形菜单和UI组件方面提供了便捷的解决方案。通过灵活运用这些插件,我们可以构建出功能丰富的Web应用...
这会在页面加载完成后自动运行插件,合并表格中所有相同内容的单元格。 总的来说,"合并html单元格的插件"提供了一种方便的方式来优化HTML表格布局,减少冗余信息,提高数据的可读性和整体视觉效果。通过理解插件的...
jQuery简单仿Excel表格功能插件,按下鼠标左键不放,可范围选择多个单元格区块,鼠标右键进行操作,可以拖动列宽,行高,对齐方式,合并单元格,上方插入一行,下方插入一行,左边插入一列,右边插入一列,删除行,...
而jQuery插件则是jQuery库的强大扩展,提供了丰富的功能,让开发者能够快速实现复杂的功能,提升开发效率。本文将深入探讨jQuery插件的概念、工作原理以及如何创建和使用它们。 ### 一、jQuery插件的基本概念 ...
本文将深入探讨如何使用jQuery插件TableExport将HTML表格转换为Excel格式的文件,以便用户可以轻松地下载和存储数据。 首先,我们需要理解jQuery TableExport插件的核心功能。这个插件允许开发者将网页上的HTML表格...
本教程将围绕“开发jQuery插件”这一主题,详细讲解如何制作一个实现表格隔行变色功能的jQuery插件。 首先,我们需要了解jQuery插件的基本结构。一个简单的jQuery插件通常包含以下部分: 1. **命名空间**:为了...
jQuery插件是jQuery库的扩展,为开发者提供了一系列丰富的功能,使得网页开发更为便捷和高效。以下是一些在描述中提到的jQuery插件及其特点: 1. **Horizontal accordion**: 这是一款水平方向折叠的控件,它使得...
Tabulator是一款功能强大的jQuery UI插件,专门用于创建交互式、可定制的表格。这款工具以其易用性和灵活性而受到开发者们的青睐。在JavaScript开发领域,特别是在处理数据展示时,Tabulator提供了一种高效的方式,...