DOM事件流与事件委托

        DOM事件流:“DOM2级事件”规定的事件流包括三个阶段:事件捕获阶段、处于目标阶段和时间冒泡阶段。首先发生的是事件捕获,为截获事件提供了机会。然后是实际的目标接收到时间。最后一个阶段是冒泡阶段,可以在这个阶段对时间做出响应。

        这是高级程序设计一书中,对DOM时间流的描述,之前我一直以为addEventListener的第三个参数决定了事件触发方式是捕获还是冒泡,最近因为要做弹出框的功能,所以详细的研究了一下,才知道这个参数指定事件是否在捕获或冒泡阶段执行。

        关于DOM事件还有一点必须提到,就是性能问题。如果页面上的事件处理程序数量过多,将会导致页面的整体运行性能下降。因为每个函数都是对象,都会占用内存,内存中的对象越多,性能就越差。其次,必须事先指定所有时间处理程序而导致的DOM访问次数,会延迟整个页面的交互就绪时间。解决这个问题的方法就是事件委托

        事件委托利用了事件冒泡,指定一个事件处理程序来管理某一类型的所有事件。举个例子:

    <ul id="namelist">
    	<li myname="zhangsan">zhangsan</li>
    	<li myname="lisi">lisi</li>
    	<li myname="wangwu">wangwu</li>
    	<li myname="zhaoliu">zhaoliu</li>
    </ul>
    document.getElementById('namelist').addEventListener('click',function(e){
  	console.log(e.target.getAttribute('myname'))
    })

就像这样,想打印出每个li标签的myname属性,只需要在ul标签上绑定click事件就可以了。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值