首页 > 代码库 > 阻止冒泡与阻止默认行为
阻止冒泡与阻止默认行为
<div id="aaa" style="width:500px;height:300px;background: red;text-align: center;">
<div id="bbb" style="width:300px;height:200px;background: pink;">
<div id="ccc" style="width:200px;height:100px;background: green;"></div>
</div>
</div>
<a href="http://www.baidu.com" id="link"> 百度一下</a>
<script type="text/javascript">
function $(id){
return document.getElementById(id);
}
var link=$("link");
var btn=$("btn");
var divs=document.getElementsByTagName("div");
//(1).阻止冒泡
function bindEvent(obj,type,fun){ //经典封装事件
if(obj.addEventListener){//判断是否标准浏览器DOM2级事件模型
obj.addEventListener(type,fun,false); //注:false为冒泡→从里面到外面,true为捕获→从外面到里面
}
else if(obj.attachEvent){//判断是否IE浏览器DOM2级事件模型
obj.attachEvent("on"+type,fun);
}
else{ //DOM0级事件模型
obj["on"+type]=fun;
}
}
function stopBubble(ev){ //阻止冒泡;
var e=event||ev; //浏览器兼容
if(e.stopPropagation){
e.stopPropagation();
}
else{
e.cancelBubble=true;
}
}
for(var i=0;i<divs.length;i++){
bindEvent(divs[i],"click",function(ev){
alert(this.id);
stopBubble(ev); //调用
})
}
//(2) 阻止默认事件
function prevent(ev){ //阻止默认事件;
var e=event||ev;
if(e.preventDefault){
e.preventDefault();
}
else{
window.event.returnValue=http://www.mamicode.com/false;
}
}
link.onclick=function(ev){ //调用
prevent(ev);
}
</script>
阻止冒泡与阻止默认行为