实例2:设置复选框-优化1

HTML

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>操作复选框</title>
		<link rel="stylesheet" href="css/index.css" />
		<script type="text/javascript" src="js/index.js" ></script>
		<script type="text/javascript" src="js/jquery-2.1.0.js" ></script>
	</head>
	<body>
		<div id="hobby">
			您喜欢做的事情:
			<div>
				<input id="basketball" type="checkbox" name="basketball" />篮球
			</div>
			<div>
				<input id="tv" type="checkbox" name="tv" />看电视
			</div>
			<div>
				<input id="internet" type="checkbox" name="internet" />上网
			</div>
			<div>
				<input id="book" type="checkbox" name="book" />看书
			</div>
			<div>
				<input id="tour" type="checkbox" name="tour" />旅游
			</div>
			<div>
				<input id="music" type="checkbox" name="music" />听音乐
			</div>
			<div>
				<input id="others" type="checkbox" name="others" />其他
			</div>
		</div>
		<div id="buttonGroup">
			<div class="button">
				<button id="selectAll" οnclick="selectHobby(1)">全选</button>
			</div>
			<div class="button">
				<button id="selectNone" οnclick="selectHobby(0)">全不选</button>
			</div>
			<div class="button">
				<button id="selectInvert" οnclick="selectHobby(-1)">反选</button>
			</div>
		</div>
	</body>
</html>


 

JS

//获取所有喜欢做的事情
function getHobby(selector){
	return $(selector);
}

//绑定行
function bindRaw(){
	$("#hobby div").each(function (){
		$(this).on('click', function (){
			var inputId = $($(this)[0].children[0].outerHTML).attr("id");
			$("#"+inputId).prop("checked", !$("#"+inputId).prop("checked"));
		})
	})
}

window.addEventListener('load', getHobby, false);
window.addEventListener('load', bindRaw, false);

//按钮触发事件
function selectHobby(type){
	console.debug(type);
	
	var selector = "input";
	var inputs = getHobby(selector);
	inputs.each(function all(){
		if (type < 0){
			$(this).prop("checked", !$(this).prop("checked"));
		}else{
			$(this).prop("checked", type);
		}
	});
}


 

CSS

#hobby{
	margin-bottom: 10px;
}

#hobby div{
	cursor: pointer;
	width: 100px;
}

.button{
	display: inline;
	cursor: pointer;
}

.button button{
	border-radius: 10px;
}


 BUG 修复

bindRaw()方法修改:

//绑定行
function bindRaw(){
	$("#hobby div span").each(function (){
		$(this).on('click', function (){
			var inputId = $(this)[0].previousSibling.id;
			$("#"+inputId).prop("checked", !$("#"+inputId).prop("checked"));
		})
	})
}


 

<input id="book" type="checkbox" name="book" />看书

修改为

<input id="book" type="checkbox" name="book" /><span>看书</span>


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值