首页 前端知识 jquery 合并单元格

jquery 合并单元格

2024-08-22 23:08:54 前端知识 前端哥 430 395 我要收藏

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

//合并第一列单元格
//给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>
复制

到此为止

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

转载请注明出处或者链接地址:https://www.qianduange.cn//article/16528.html
标签
评论
还可以输入200
共0条数据,当前/页
发布的文章

安装Nodejs后,npm无法使用

2024-11-30 11:11:38

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!