jquery 合并单元格

原始表格
在这里插入图片描述
合并后的单元格
在这里插入图片描述
在这里插入图片描述
直接上代码

  //合并第一列单元格
  //给tbody下的第一行(tr:first-child)第一个单元格(td').eq(0))
	//加上rowspan 长度是这个表格tr的长度(attr('rowspan',  $("tbody tr").length);)
        $('tbody tr:first-child td').eq(0).attr('rowspan',  $("tbody tr").length);

        var num = $('tbody tr').length;
        for (i = 0 ; i<=num; i++){
            debugger
            //判断tr下面是否有孩子,有则进行(这个判断不太正确 我不是专业的前端,大家有时间可以自行练习一下)
            if($('tbody tr').find(':nth-child('/i+2/')')){

//遍历tr 注意这一步比较重要 这是删除td单元格的操作,因为第一列合并的话,
//那么被合并的单元格就会挤到第二列,所以需要拿到第二列所有行(第一行除外)的第一个单元格给删掉,
//删掉的是第一列被合并挤到后面的单元格。
                $('tbody tr').filter(function(index) {
                    // index是当前tr元素的索引(从0开始)
                    // 检查索引是否大于等于i+2(因为:nth-child是从1开始计数的)
                    return index >= i + 1; // 注意:这里的比较是index和i+1,因为index是从0开始的
                }).find('td').eq(0).remove()
            }
        }



//该串代码与上面类似,就不再解释了
        //合并第二列单元格
        $('tbody tr:first-child td').eq(1).attr('rowspan',  $("tbody tr").length);

        var num = $('tbody tr').length;
        for (i = 0 ; i<=num; i++){
            debugger
            if($('tbody tr').find(':nth-child('/i+2/')')){

                $('tbody tr').filter(function(index) {
                    // index是当前tr元素的索引(从0开始)
                    // 检查索引是否大于等于i+2(因为:nth-child是从1开始计数的)
                    return index >= i + 1; // 注意:这里的比较是index和i+1,因为index是从0开始的
                }).find('td').eq(1).remove()
            }
        }

具体为什么这么写,以下代码使用Hbuilder 一步步dubug进行查看,相信大家会发现原因 这个已经写的很清楚!!!

<!DOCTYPE html>
<html>
	<head>
		<!-- <meta charset="GBK"> -->
		<meta charset="UTF-8">
		<title></title>
		
		<style>  
		  #myTable {  
		      border-collapse: collapse;  
		      width: 100%;  
		    }  
		    #myTable tr, #myTable td {  
		      border: 1px solid black;  
		      padding: 8px;  
		      text-align: left;  
		    }
		  </style>  
		
	</head>
	<form>
<table id="myTable">
  <tr>
    <td>1.1</td>
    <td>1.2</td>
	<td>1.3</td>
	<td>1.4</td>
  </tr>
  <tr>
    <td>2.1</td>
    <td>2.2</td>
	<td>2.3</td>
	<td>2.4</td>
  </tr>
  <tr>
    <td>3.1</td>
    <td>3.2</td>
	<td>3.3</td>
	<td>3.4</td>
  </tr>
</table>
	</form>
</html>

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>

<script>
$(document).ready(function() {
debugger

  var $firstRowCells = $('#myTable tr:first-child td'); // 获取第一行的所有单元格
  var $secondRowCells = $('#myTable tr:nth-child(2) td'); // 获取第二行的所有单元格
  var $thirdRowCells = $('#myTable tr:nth-child(3) td'); // 获取第二行的所有单元格
 
  //合并第一列
  $firstRowCells.eq(0).attr('rowspan', 3);
	$secondRowCells.eq(0).remove();
 $thirdRowCells.eq(0).remove();
 
 debugger
 //合并第二列
 $firstRowCells.eq(1).attr('rowspan', 3);
 	$secondRowCells.eq(1).remove();
 $thirdRowCells.eq(1).remove();
 });
</script>

到此为止

这辈子坚持与不坚持都不可怕,怕的是独自走在坚持的道路上!!!

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值