美文网首页
DOM事件(二)

DOM事件(二)

作者: 阿龙哟 | 来源:发表于2018-10-23 09:05 被阅读0次
image.png

当没有阻止事件传播时


image.png

点击按钮会没有反应,因为在冒泡过程中,浮窗先是成为block,然后又成了none,这两段代码都在执行,只不过,效果抵消了

在按钮处阻止事件传播,点击出现
在doucment对象或者documentElement身上绑定监听事件,可以点击让浮窗消失,body上绑定会直接出bug,因为body只有红线一行!


bug 1 点击图层也会消失,因此在wrapper上面阻止事件传播

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


$('.btn').on('click',function(){
  $('.popover').show()
})

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

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

注意点:jquery中 a.on('xx',false)
这里的false 既阻止了默认事件,也阻止了事件传播
相当于stopPropagation和preventEvent


在document上面如果挂载多个监听器,将会造成内存负担,因此,选择不在一开始就监听document,而在浮层出现时监听一次,监听完销毁,再次点击再次监听

  $('.popover').show()
  $(document).one('click',function(){
    console.log(1)
  $('.popover').hide()
})
})

但是这样会出现问题,

image.png

点击并不会出现浮窗,但是代码都执行了,因为这是同步运行,show()的同时添加了一个监听函数,监听到了点击事件然后又把他隐藏了,

所以用一个定时器来解决这个bug

$('.btn').on('click', function() {
  $('.popover').show()
  console.log('show') 
  setTimeout(function(){
    $(document).one('click', function() {
    console.log('hide')
    $('.popover').hide()
  })
  },0) 
})

因为settimeout是异步代码,会在同步代码执行完毕后再执行,这下就能点开了


浏览器会时不时的偷懒,因此会导致有些bug的产生,比如每秒钟打印两次时间,当浏览器不在当前页面时,他只会每秒做一次

jquery clone(true) 深拷贝

相关文章

  • DOM事件(二)

    当没有阻止事件传播时 点击按钮会没有反应,因为在冒泡过程中,浮窗先是成为block,然后又成了none,这两段代码...

  • DOM事件(二)

    一、 事件对象 1.1 DOM中的事件对象 在触发DOM上的某个事件时,会产生一个事件对象event: event...

  • 事件冒泡,事件捕获和事件冒泡

    DOM0级事件是不支持捕获阶段的,DOM2级事件才支持。然而,DOM二级事件分为W3C和IE两种事件模型 事件冒泡...

  • 前端面试题(3)——DOM事件类

    基本概念:DOM事件的级别 DOM事件模型:事件冒泡事件捕获 DOM事件流 描述DOM事件捕获的具体流程 Even...

  • DOM事件

    DOM级别与DOM事件 DOM级别:DOM0级、DOM1级、DOM2级、DOM3级DOM事件:DOM0级事件处理、...

  • DOM事件

    DOM级别与DOM事件 DOM级别:DOM0级,DOM1级,DOM2级和DOM3级DOM事件:DOM0级事件处理,...

  • DOM0和DOM2级事件简单理解

    关于DOM0 和DOM1级事件可以简单理解为:事件分为DOM 0级事件和Dom 2级事件,DOM2级事件也叫做事件...

  • Dom事件

    基本概念 Dom事件级别 Dom事件模型 Dom事件流 描述Dom事件捕获的具体流程 Event对象的常见应用 自...

  • 3-6 DOM事件

    问题 DOM 事件的级别 DOM 事件模型(就是捕获和冒泡儿) DOM 事件流 描述DOM事件捕获的具体流程 Ev...

  • HTML DOM 事件

    HTML DOM 事件 HTML DOM 事件 HTML DOM 事件允许Javascript在HTML文档元素中...

网友评论

      本文标题:DOM事件(二)

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