js事件流(事件捕获——目标阶段——事件冒泡)

1. 事件捕获,事件冒泡
事件:事件是指文档和浏览器窗口发生特定交互的瞬间。
事件流: 事件流指页面中接受事件的顺序,微软为事件冒泡,网景为事件捕获。
事件捕获:由上而下,根元素最早接受事件,目标元素最后接受事件。
事件冒泡:由下而上,目标元素最早接受事件,逐级向上,最后根元素接受事件。

2. DOM事件流
DOM事件流规定,事件流由三个部分构成 事件捕获——目标阶段——事件冒泡,首先事件捕获为截获事件提供机会,然后实际目标接受事件,事件冒泡阶段对事件做出响应。事件在目标阶段是无法获取事件的。

3. 事件处理程序
DOM事件定义了两种方法,addEventListener和removeEventListener他们都包含三个参数(1.处理事件的的方式click…2.事件处理函数(如果是删除函数必须是命名函数3.bool值为true为事件捕获阶段调用,默认为false事件冒泡阶段调用)

4. 事件委托
利用事件冒泡原理,将子级触发的事件绑定在父级身上。

 <ul id='list'>
 	<li>1</li>
 	<li>2</li>
 	<li>3</li>
 </ul>

// event.target  代表目标元素,target事件源对象
const ul = document.querySelector('#list')
ul.addEventListener('click',function(e){
  const event = e || window.event
  const target = event.target
  if(target.nodeName.toLowerCase() === 'li'){
		console.log(target.nodeName)
	}
  
},false)

事件委托优点:
1. 减少多次绑定,提高程序性能
2. 动态添加的子元素也能自动获取事件

5. js阻止事件冒泡和默认事件
w3c:e.stopPropagation
ie:window.event.cancelBubble = true
默认事件:是指目标元素的默认行为比如a标签会跳转链接 form会提交表单
w3c:e.preventDefault()
ie:window.event.returnValue = false
另外js中的return false也可以阻止默认行为jq中的return false既可以阻止默认行为也可以阻止冒泡

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值