DOM事件实例

点击别处关闭浮层

Ⅰ. 思路1

阻止冒泡 stopPropagation()

  • 案例点这里

  • bug:同样地,点击浮层会关闭

  • 解决bug:在它们的父元素wrapper上增加阻止冒泡

Ⅱ. 思路2

document在捕获阶段触发click事件,点击按钮在冒泡阶段触发click事件

  • 案例点这里

  • bug:点击浮层会关闭

  • 解决bug:笨方法,给浮层也加上一个click事件,这里用思路1的解决方法是解决不了问题的。因为document的click事件是在捕获阶段获取的,而stopPropagation()只是阻止了冒泡阶段。

Ⅲ. 思路3(更节省内存)

1.使用one()方法,使document只执行一次click事件(hide)

  • 案例点这里
  • 解决两个bug方法
    • 阻止冒泡
      1. 知识点
        a. jQuery的.on()方法的一个用法
        $(wrapper).on('click',false)
        //等价于下面
        $(wrapper).on('click',function(e){
        e.stopPropagation()
        e.preventDefault()
        })
        //会出现的一个bug
        //preventDefault()会使得checkbox不能点击。
        b. .one()方法只执行一次事件的函数。
    • 添加一个定时器,让document的事件函数在冒泡结束之后再添加。----------防止点击button时,浮层无法出现。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  •   JavaScript 与 HTML 之间的交互是通过事件实现的。   事件,就是文档或浏览器窗口中发生的一些特...
    霜天晓阅读 8,862评论 1 11
  • 以下文章为转载,对理解JavaScript中的事件处理机制很有帮助,浅显易懂,特分享于此。 什么是事件? 事件(E...
    jxyjxy阅读 8,161评论 1 10
  • js之事件机制 1、事件初探 1.1 js事件的概述 JavaScript事件:JavaScript是基于事件驱动...
    道无虚阅读 7,075评论 0 2
  • 事件流 JavaScript与HTML之间的交互是通过事件实现的。事件,就是文档或浏览器窗口中发生的一些特定的交互...
    DHFE阅读 4,258评论 0 3
  • 事件是一种异步编程的实现方式,本质上是程序各个组成部分之间的通信。DOM支持大量的事件,本节介绍DOM的事件编程。...
    周花花啊阅读 3,736评论 0 3