美文网首页
点击别处关闭浮层(对DOM冒泡的深入理解)

点击别处关闭浮层(对DOM冒泡的深入理解)

作者: desperadokk | 来源:发表于2019-01-15 17:59 被阅读0次

如果JS不加

wrapper.addEventListener('click', function(e){e.stopPropagation()})

点击点我按钮浮层不能显示,因为根据DOM冒泡模型,一旦点击了clickMe的button按钮,则它的父元素document也会执行。



用jQuery的

$(wrapper).on('click', false)

也能阻止默认冒泡,但会出现一个问题,浮层中的checkbox无法点击,因为也被阻止了。


但这样存在一个问题

$(document).on('click', function(){$(popover).hide()})

这个函数一直在监听,这样很耗内存。能否有方法监听一次就可以了?
用one函数

$(document).one('click', function(){$(popover).hide()})

就可以解决只监听一次的问题,但代码如下图这样写的话还是会存在DOM冒泡的问题,一旦点击clickMe,document的click也会执行。

把one函数放入setTimeout函数中可以解决这个问题,它会在DOM冒泡结束后在执行setTimeout内的函数,但不会执行setTimeout内的one函数,只有在下次点击时才会执行,因为第一次的冒泡已经结束了。

相关文章

  • 点击别处关闭浮层(对DOM冒泡的深入理解)

    如果JS不加 点击点我按钮浮层不能显示,因为根据DOM冒泡模型,一旦点击了clickMe的button按钮,则它的...

  • DOM事件实例

    点击别处关闭浮层 Ⅰ. 思路1 阻止冒泡 stopPropagation() 案例点这里 bug:同样地,点击浮...

  • 从“点击别处关闭浮层”了解事件传播机制

    写出一个点开浮层、关闭浮层的例子,要求:1)点击按钮弹出浮层2)点击别处关闭浮层3)点击浮层时,浮层不得关闭4)再...

  • DOM 事件模型2:阻止冒泡,popover

    从popover(点击别处关闭浮层)理解冒泡与捕获 当几个DIV嵌套,触发事件时,是先进行捕获阶段的触发,再进行冒...

  • DOM事件笔记

    点击别处关闭浮层 1.阻止事件传播(stopPropagation) 阻止冒泡,不通知父级元素代码(documen...

  • task33 进阶:DOM 事件

    上一次课程的dom events知识? 用实际例子学习dom事件模型——点击别处关闭浮层的效果搜 bootstra...

  • 制作点击按钮触发浮层

    1.做到点击按钮开启浮层 2.做到点击按钮开启浮层,再次点击关闭浮层 3.做到点击别处关闭浮层 4.最终做到-点击...

  • 点击别处关闭浮层

    需求:点击button出现浮层,点击别处关闭浮层。我们有一个按钮和一个浮层,浮层内为一个checkbox,浮层默认...

  • 触发 / 关闭浮层

    实现功能:点击按钮触发浮层,点击别处关闭浮层。 html 代码: 部分 css 代码: 1. 方案一 --- 用 ...

  • DOM事件、事件流

    制作“点击别处关闭浮层”效果 debugger event.stopPropagation()这个方法用于阻止事件...

网友评论

      本文标题:点击别处关闭浮层(对DOM冒泡的深入理解)

      本文链接:https://www.haomeiwen.com/subject/djsydqtx.html