DOM事件流

DOM事件流:

1.事件捕获阶段
2.处于目标阶段
3.事件冒泡阶段
事件捕获
当事件发生时,首先发生的是事件捕获,为父元素截获事件提供了机会

window.addEventListener('click', function() {
  console.log('4. You click window');
}, true);

处于目标与事件冒泡阶段
事件到了具体元素时,在具体元素上发生,并且被看成冒泡阶段的一部分。随后,冒泡阶段发生,事件开始冒泡。

考试必备题:

防止冒泡和捕获
w3c的方法是e.stopPropagation(),IE则是使用e.cancelBubble = true
stopPropagation也是时间对象(Event)的一个方法,作用是阻止目标元素的冒泡事件,但是会不阻止默认行为
什么是冒泡事件?如在一个按钮是绑定一个”click”事件,那么”click”事件会依次在它的父级元素中被触发 。stopPropagation就是阻止目标元素的事件冒泡到父级元素。
未阻止事件冒泡:

<div id='div' onclick='clickDiv()'>
	<ul onclick='clickUl()'>
		<li onclick='clickLi()'>test</li>
	</ul>
</div>
<script type="text/javascript">
 function clickDiv(){
	alert("div");
}
function clickUl(){
	alert("ul");
}
function clickLi(){
	alert("li");
}
</script>

阻止事件冒泡:
未阻止事件冒泡行为时会弹3下,如果加上以下这段话,可以阻止事件冒泡

<script type="text/javascript">
 function clickDiv(){
 	//阻止事件冒泡
 	window.event? window.event.cancelBubble = true : e.stopPropagation();
	alert("div");
}
</script>

取消事件默认行为
event.preventDefault()方法是用于取消事件的默认行为,但此方法并不被ie支持,在ie下需要用window.event.returnValue = false; 来实现。

    function stopDefault( e ) {     
    	if ( e && e.preventDefault ){     
    		e.preventDefault();
         } else {     
          	window.event.returnValue = false;
         }  
    }

可以处理ie firefox下图片拖动的问题。

    document.onmousemove=function(ev){
     var oEvent=ev||event;
     if(oEvent.preventDefault){
     	oEvent.preventDefault();
     }else{
     	oEvent.returnValue=false;
     }
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值