イベントの伝達を停止する (stopPropagation)
説明
イベントの伝達を停止するにはstopPropagation()を使います。Internet Explorerの場合はstopPropagation()がありませんが、イベントの伝達を停止するには「event.cancelBubble = true;」とします。
サンプルプログラム
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>Sample</title>
<link rel="stylesheet" href="css/main.css" type="text/css" media="all">
<script type="text/javascript" src="js/sample.js"></script>
</head>
<body id="aBody">
<h1>イベントの伝達を停止させる</h1>
<form id="aForm" method="get" action="./regist.cgi">
<input type="button" value="クリックするとイベントが伝達されます" id="aButton"><br>
<input type="button" value="このボタンは、ここでイベント伝達を停止する" id="bButton"><br>
</form>
<div id="result"></div>
</body>
</html>
【スクリプト】
window.addEventListener("load", function(){
document.getElementById("aButton").addEventListener("click", message, true);
document.getElementById("aForm").addEventListener("click", message, true);
document.getElementById("aBody").addEventListener("click", message, true);
document.getElementById("bButton").addEventListener("click", function(evt){
evt.stopPropagation();
}, true);
}, true);
function message(obj){
document.getElementById("result").innerHTML += this.id+"<br>";
}