プログラマーな日々

プログラマーをやっています。好きなものは、C#, TaskChute Cloud, WorkFlowy, Backlog, AWSです。

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();
			// 兄弟要素のチェックボックスを全てチェックする
			$(this).siblings('input:checkbox').attr('checked', 'checked');
		});

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

すべてチェック

アンカークリック前

アンカークリック後


すべてチェック解除

アンカークリック前

アンカークリック後