JavaScriptは事件のバブルを防ぐ.
1375 ワード
今日は独学でコードを打つ時に問題を発見しました.その時の例は次の通りです.
btnをクリックすると、div上のクリックイベントが発生し、2つのアラームボックスが表示されます.
この原因は事件の泡が発生したためです.コードを修正します.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<style>
#div1{
height: 200px;
width: 200px;
background-color: #3b7796;
}
#btn{
margin: 50px;
}
</style>
<script>
function fn1(){
alert("this is div");
}
function fn2(){
alert("this is btn");
}
</script>
<body>
<div id="div1" onclick="fn1();">
<button id="btn" onclick="fn2();">btn</button>
</div>
</body>
</html>
btnをクリックすると、div上のクリックイベントが発生し、2つのアラームボックスが表示されます.
この原因は事件の泡が発生したためです.コードを修正します.
function fn2(e){
// , event IE
if(e && e.stopPropagation){
e.stopPropagation();
}else {
//IE
window.event.cancelBubble = true;
}
alert("this is btn");
}
このようにして事件の泡が立つのを阻止しました.