博客
关于我
关于点击弹框外部区域弹框关闭的交互处理
阅读量:461 次
发布时间:2019-03-06

本文共 935 字,大约阅读时间需要 3 分钟。

常见需求场景

前端在处理交互的时候,经常遇到这样的场景,点击一个按钮,出现一个弹框,点击外部区域,弹框关闭。

解决方法

思路说明:

1、给弹框的div父级都加个类名,如:

2、在document绑定一个点击事件,获取当前点击元素的类名,开始向上找,找它的父级类名,

2.1. 包含我们加的几个类名,则表示点击的是当前框,不处理;
2.2. 不包含我们加的几个类名,则是外部区域,关闭当前显示框;

代码实现

// 添加点击事件document.addEventListener('click', e => {      if (this.boxShow) {      this.closeBox(e);    }});
// 关闭弹窗处理 closeBox(e) {    e.stopPropagation();    // 获取当前元素的所有父级元素    const parentNames = this.getParentsClassName(e.target);        // 如果不包括我们定义的框父级类名,则关闭弹框    if (      !parentNames.includes('box-content') &&      !parentNames.includes('box-filter') &&      !parentNames.includes('box-list')    ) {      this.boxShow= false;    }  }    // 获取当前元素的类名,及其所有的父级类名  getParentsClassName (el) {      let p = el.parentNode;      const parents = new Set();      parents.add(el.className);      while (p && p.tagName !== 'BODY') {        parents.add(p.className);        p = p.parentNode;      }      return Array.from(parents);    }

转载地址:http://vfubz.baihongyu.com/

你可能感兴趣的文章
Mysql中存储过程、存储函数、自定义函数、变量、流程控制语句、光标/游标、定义条件和处理程序的使用示例
查看>>
mysql中实现rownum,对结果进行排序
查看>>
mysql中对于数据库的基本操作
查看>>
Mysql中常用函数的使用示例
查看>>
MySql中怎样使用case-when实现判断查询结果返回
查看>>
Mysql中怎样使用update更新某列的数据减去指定值
查看>>
Mysql中怎样设置指定ip远程访问连接
查看>>
mysql中数据表的基本操作很难嘛,由这个实验来带你从头走一遍
查看>>
Mysql中文乱码问题完美解决方案
查看>>
mysql中的 +号 和 CONCAT(str1,str2,...)
查看>>
Mysql中的 IFNULL 函数的详解
查看>>
mysql中的collate关键字是什么意思?
查看>>
MySql中的concat()相关函数
查看>>
mysql中的concat函数,concat_ws函数,concat_group函数之间的区别
查看>>
MySQL中的count函数
查看>>
MySQL中的DB、DBMS、SQL
查看>>
MySQL中的DECIMAL类型:MYSQL_TYPE_DECIMAL与MYSQL_TYPE_NEWDECIMAL详解
查看>>
MySQL中的GROUP_CONCAT()函数详解与实战应用
查看>>
MySQL中的IO问题分析与优化
查看>>
MySQL中的ON DUPLICATE KEY UPDATE详解与应用
查看>>