Architect's Log

I'm a Cloud Architect. I'm highly motivated to reduce toils with driving DevOps.

【jQuery】1つのチェックボックスに基づいてすべてのチェックボックスを切り替える

ソースコード

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
<fieldset>
	<legend>Reasons to be happy</legend><a class="selectAll" href="#">Select All</a>
	<a class="deselectAll" href="#">Deselect All</a>
	<input name="reasons" id="iwokeup" type="checkbox" value="iwokeup" />
	<label for="iwokeup">I woke up</label>
	<input name="reasons" id="health" type="checkbox" value="health" />
	<label for="health">My health</label>
	<input name="reasons" id="family" type="checkbox" value="family" />
	<label for="family">My family</label>
	<input name="reasons" id="sunshine" type="checkbox" value="sunshine" />
	<label for="sunshine">The sun is shining</label>
</fieldset>
</body>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.js"></script>
<script type="text/javascript">
(function ($) {
	$(document).ready(function () {
		$('fieldset .selectAll').click(function (event) {
			// アンカー本来の動作を中止する
			event.preventDefault();
			// 兄弟要素のチェックボックスを全てチェックする (siblingsは兄弟要素をすべて返す)
			$(this).siblings('input:checkbox').attr('checked', 'checked');
		});

		$('fieldset .deselectAll').click(function (event) {
			event.preventDefault();
			$(this).siblings('input:checkbox').removeAttr('checked');
		});
	});
})(jQuery);
</script>
</html>

すべてチェック

アンカークリック前

アンカークリック後


すべてチェック解除

アンカークリック前

アンカークリック後