jquery 实现表格相同列表合并

最近在开发客户网站的时候,客户提出了一个奇葩的需求,需要将表格做出如下的合并!

其实合并相同的列表这个网上有现成的 js 可以用的,但是在第二列整列都是相同的,如果单纯的做相同的合并,那么整列就都相同了,客户看了之后就说需要将第二列改成与第一列同样的合并高度。

无奈,客户是上帝啊!

于是乎,开始找规律,最后跟客户沟通后发现他们的产品名称是有规律的,都是xxx-xxx-xx的格式。

有了规律,那就只剩代码的事情了!

下面我将修改后的代码赠予有缘人!

   $(".table-left").each(function () {
        var col=$(this).find('tr:first th').length;
        for(var i=0;i<col-1;i++){
            $(this).rowspan(i);
        }
    })
jQuery.fn.rowspan = function(colIdx) { //封装的一个JQuery小插件
    return this.each(function(){
        var that;
        var rowspan;
        $('tr', this).each(function(row) {

            $('td:eq('+colIdx+')', this).filter(':visible').each(function(col) {
                if (that!=null && $(this).html() == $(that).html()) {
                    /*上一行*/
                    var prev_name=$(this).parent().prev().find('td:last').text()
                    var prev_name_arr=prev_name.split('-');
                    /*当前行*/
                    var pro_name=$(this).parent().find('td:last').text()
                    var pro_name_arr=pro_name.split('-')
                    rowspan = $(that).attr("rowSpan");
                    if (rowspan == undefined) {  /*如果是列第一个*/
                        $(that).attr("rowSpan",1);
                        rowspan = $(that).attr("rowSpan");
                    }

                    if(prev_name_arr[1]!=pro_name_arr[1]){   /*如果当前行的值与上一行的值不相等*/
                        that = this;                         /*就把当前行记录进行比较*/
                    }else{
                        rowspan = Number(rowspan)+1;
                        $(that).attr("rowSpan",rowspan);
                        $(this).hide();
                    }
                } else {
                    that = this;
                }
            });
        });
    });
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值