实现点击展开与关闭按钮切换操作及插入与移除table表效果

第一步要实现的效果:如下图所示,点击table表中的展开图标,切换关闭图标,从而实现展开与关闭图标的切换效果
在这里插入图片描述

<div id="wrapper">
	<table id="parentTable">
		<thead>
			<tr><th>序号</th><th>省份</th><th>天气</th></tr>
		</thead>
		<tbody>
		</tbody>
	</table>
</div>
#wrapper {
	width: 100%;
}

#parentTable{
	border-collapse: collapse;
	width: 80%;
	text-align: center;
}
#sonTable{
	border-collapse: collapse;
	width: 167.5%;
	text-align: center;
}

#parentTable thead{
	background: cyan;
}
#sonTable thead{
	background: #e6e6e6;
}
#parentTable th,
#parentTable td,
#sonTable th,
#sonTable td{
	border: 1px solid #e6e6e6;
	padding: 4px 0;
}

img {
	width: 20px;
	height: 20px;
	vertical-align: middle;
	margin-left: 4px;
}

var parentData = [
	{id:1,area:"北京",weather:"sunny"},
	{id:2,area:"河南",weather:"cloudy"}
]
var sonData = [
	{id:1,area:"宣武区",weather:"rain",people:"10w"},
	{id:2,area:"东城区",weather:"sunny",people:"7w"}
]

var str = ""
$.each(parentData,function(i,item){
	str += `<tr><td>${item.id}</td><td>${item.area}<img src="./img/down.png" alt=""></td><td>${item.weather}</td></tr>`
})
$("#parentTable tbody").append(str)

$("#parentTable tbody").on('click','img',function(e){
	var currentImg = $(e.target).attr("src");
}else{
	$(e.target).attr("src",down)
}

第二步要实现的效果:如下图所示,点击展开图标,动态在点击展开图标的那行后面动态插入一个table表
在这里插入图片描述

$("#parentTable tbody").on('click','img',function(e){
	var currentImg = $(e.target).attr("src");
	var down = "./img/down.png";
	var up = "./img/up.png"
	if(currentImg == down){
		$(e.target).attr("src",up)
		var sonTable = `<table id="sonTable">
				<thead>
					<tr>
						<th>序号</th>
						<th>地区</th>
						<th>天气</th>
						<th>人口</th>
					</tr>
				</thead>
				<tbody>
				</tbody>
			</table>`
		
		var sonStr = "";
		$.each(sonData,function(idx,itm){
			sonStr += `<tr>
							<td>${itm.id}</td>
							<td>${itm.area}</td>
							<td>${itm.weather}</td>
							<td>${itm.people}</td>
						</tr>`
		})
		$(e.target).parent().parent().after(sonTable)
		$(e.target).parent().parent().next($("#sonTable tbody")).append(sonStr)
	}else{
		$(e.target).attr("src",down)
		$(e.target).parent().parent().next().remove();
	}
})

虽说最终实现了想要的效果,但是动态插入的table表的样式是有问题的,本来外层的table宽度设置的是80%,动态创建的table宽度我设置成167.5%,投机取巧才看起来跟外层的table宽度一致,想不到更好的解决办法了,就暂时写成这样的了,希望有其他解决方法的小伙伴,欢迎交流

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值