最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 《DOM事件与事件委托》

    正文概述 掘金(用户7118714082313)   2021-03-03   530

    DOM 事件模型

    先捕获,后冒泡

    一个事件发生后,会在子元素和父元素之间传播,传播分三个阶段

    1. 捕获阶段:时间从 window 对象自上而下向目标节点传播
    2. 目标阶段:真正的目标节点正在处理的阶段
    3. 冒泡阶段:事件从目标节点自下而上向 window 对象传播

    事件捕获

    从外向内 找监听函数,叫事件捕获

    // 填 true
    element.addEventListener('click',fn, true)
    
    // 点击 儿子
    爷爷.addEventListener('click',()=>{
    	console.log('爷爷')
    })
    爸爸.addEventListener('click',()=>{
    	console.log('爸爸')
    })
    儿子.addEventListener('click',()=>{
    	console.log('儿子')
    })
    
    // 爷爷
    // 爸爸
    // 儿子
    

    事件冒泡

    从内向外 找监听函数,叫事件冒泡

    // 填 false 或 不填
    element.addEventListener('click',fn, false)
    
    // 点击 儿子
    爷爷.addEventListener('click',()=>{
    	console.log('爷爷')
    })
    爸爸.addEventListener('click',()=>{
    	console.log('爸爸')
    })
    儿子.addEventListener('click',()=>{
    	console.log('儿子')
    })
    
    // 儿子
    // 爸爸
    // 爷爷
    

    先捕获看看有没有函数监听,后冒泡看看有没有函数监听,如果有函数那就执行,没有就跳过

    特例:

    取消冒泡

    e.stopPropagation() 可以中断冒泡,浏览器不再向上走

    不可阻止默认动作

    • MDN 搜索 scroll event(看英文版),看到 Bubbles 和 Cancelable
    • Bubbles 的意思是该事件是否冒泡,所有冒泡都可以取消
    • Cancelable 的意思是开发者是否可以阻止默认事件,与冒泡无关《DOM事件与事件委托》

    可以看到,滚动事件 Cancelable 为 No,不可阻止默认动作

    • 阻止 scroll 默认动作没用,因先有滚动才有滚动事件
    • 要阻止滚动,可阻止 wheel 和 touchstart 的默认动作
    • e.preventDefault()
    x.addEventListener('wheel', (e)=>{
      e.preventDefault()
    })
    

    事件委托

    就是利用事件冒泡的原理,只指定一个事件处理程序,就可以来管理某一类型的所有事件

    只需要给父级元素添加事件就好了!

    1. 给100个按钮添加点击事件

    可以监听这100个按钮的祖先,等冒泡的时候判断 target 是不是这100个按钮中的一个

    2. 监听目前不存在的元素的点击事件

    监听祖先,等点击的时候看看是不是我想要监听的元素

    优点

    1. 省监听数(内存)
    2. 可以监听动态元素

    起源地下载网 » 《DOM事件与事件委托》

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元