<jquery>jquery动态合并表格
1.适用场景
在前端的表格数据展示中,有时候需要进行部分数据的行合并,如下图,将1的数据合并成2的样子。
2.调用规则
1.html
2.js
3.原理
用class来标记要合并处理的单元td,每个合并的列用不同的class标记,该方法会进行比较,相邻相同的列的html相同,则进行合并。该html内容可以包括隐藏主键。
在第三个参数中,如果为空,则不进行限制,合并的行数可能超过预期值。(合并过多),通过在设置在此之前合并的class类,进行rowspan的 判断。
4.实现代码
/** * 合并列单元 * @param id tableId * @param classArr 要处理的td的class集合 * @param classLimit 限制合并行数td的class */ function(id,classArr,classLimit) { if(id === null || id === undefined) { console.log(id + " is empty . ") ; return ; } if(!classArr instanceof Array) { console.log(classArr + " is not array . ") ; return ; } var length = classArr.length ; if(0 === length ) { console.log(classArr + " is empty . ") ; return ; } if(0 < length ) { for(var i = 0 ;i < length ;i ++) { if(classArr[i].indexOf(".") > 0) { console.log(classArr + "--" + classArr[i] + " is not legal,it can"t contains "." . ") ; } } } /*var limit = $("." + classLimit) .length ;*/ for(var i = 0 ;i < length ;i ++) { var colClass = classArr[i] ; var $col = $("#" + id).find("." + colClass) ; var size = $col.length ; var _index = 0 ; $col.each(function(k){ if(_index === size - 1) { $(this).attr("rowspan",1) ; return ; } if(k >= _index ) { var _jump = 0 ; do { _jump ++ ; } while($(this).html() === $col.eq(k + _jump).html()) ; if(null !== classLimit && _jump > 1) { var _limit = $(this).parent().find("." + classLimit).attr("rowspan") * 1 ; if(_jump > _limit) { _jump = _limit ; } } $(this).attr("rowspan",_jump) ; _index += _jump ; } }) ; $col.each(function(){ if(undefined === $(this).attr("rowspan")) { $(this).remove() ; } }) ; }
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: jquery 生成表格,拆分,合并
- 下一篇: Django模板之显示字典中内容