js控制复选框和父容器样式

这篇博客介绍了如何通过JavaScript实现点击复选框及其父容器时,两者都能呈现边框选中效果。内容中提到,由于点击复选框会冒泡触发父容器事件,同时自动切换checked状态,因此需要判断事件触发源以正确应用样式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

js控制复选框和父容器样式

效果

点击复选框和父容器,都会出现边框选中效果。
![在这里插入图片描述](https://img-blog.csdnimg.cn/ffea78b55e71433dbfe22e71e25c6c4a.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdl9sb2FkaW5n,size_20,color_FFFFFF,t_70,g_se,x_16

实现

因为点击复选框,冒泡会触发父容器事件,且复选框会自动切换checked,所以需判断是由谁触发的。

<script type="text/javascript">
			$(function() {
				//身份选择
				var ck1 = $('#ck1')
				var ck2 = $('#ck2')
				var ck3 = $('#ck3')
				var ib1 = $('#ib1')
				var ib2 = $('#ib2')
				var ib3 = $('#ib3')

				ib1.click(function() {
					//console.log('ccc', ck1[0].checked)
					if (ib1.hasClass("blueborder")) {
						ib1.removeClass('blueborder');
					} else {
						ib1.addClass('blueborder');
					}
					e = window.event || e;

					var obj = e.srcElement || e.target;

					if ($(obj).is("#ck1")) {
						//子元素上要做的事件

					} else {
						//父元素上要做的事件
						ck1.prop('checked', !ck1[0].checked)

					}
					/* if(ck1[0].checked){
						ib1.addClass('blueborder');
						ck1.prop('checked', true)
					}else{
						ib1.removeClass('blueborder');
						ck1.prop('checked', false)
					} */
				})
				ib2.click(function() {
					if (ib2.hasClass("blueborder")) {
						ib2.removeClass('blueborder');
					} else {
						ib2.addClass('blueborder');
					}
					e = window.event || e;

					var obj = e.srcElement || e.target;

					if ($(obj).is("#ck2")) {} else {
						ck2.prop('checked', !ck2[0].checked)

					}

				})
				ib3.click(function() {
					if (ck3[0].checked) {
						ib3.addClass('blueborder');
					} else {
						ib3.removeClass('blueborder');
					}
					e = window.event || e;

					var obj = e.srcElement || e.target;

					if ($(obj).is("#ck3")) {} else {
						ck3.prop('checked', !ck3[0].checked)

					}
					/* ib3.addClass('blueborder');
					ib1.removeClass('blueborder');
					ib2.removeClass('blueborder');
					ck1.prop('checked', false)
					ck2.prop('checked', false)
					ck3.prop('checked', true) */
				})
});
		</script>
<div class="f_header">
								选择入驻身份
							</div>
							<div class="imggroup">
								<div class="imgbox" id="ib1">
									<div class="checkbox">
										<label>
											<input type="checkbox" value="0" id="ck1"></label>
									</div>
									<div class="sfimg sf1">
										<!-- <img src="../../../static/img/login1/role1.png" class="sf" /> -->
									</div>
									<div class="sftext">
										设备厂商
									</div>
								</div>
								<div class="imgbox" id="ib2">
									<div class="checkbox">
										<label>
											<input type="checkbox" value="1" id="ck2"></label>
									</div>
									<div class="sfimg sf2">
										<!-- <img src="../../../static/img/login1/role1.png" class="sf" /> -->
									</div>
									<div class="sftext">
										应用服务商
									</div>
								</div>
								<div class="imgbox" id="ib3">
									<div class="checkbox">
										<label>
											<input type="checkbox" value="2" id="ck3"></label>
									</div>
									<div class="sfimg sf3">
										<!-- <img src="../../../static/img/login1/role1.png" class="sf" /> -->
									</div>
									<div class="sftext">
										设备厂商+应用服务商
									</div>
								</div>
							</div>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值