点击页面其他区域隐藏弹出层

弹出层简称pop,隐藏方法有两种。

1. pop上阻止冒泡,document上click隐藏pop

jquery实现

$("#showPop").on("click", function(e) {
    $("#pop").show();

    $(document).one("click", function() {
        $("#pop").hide();
    });

    e.stopPropagation();
});
$("#pop").on("click", function(e) {
    e.stopPropagation();
});    

pop show时注册一次document的click,可以减少document click的无谓触发和pop检测。

2. document上click,检测事件源,是否为pop或其子元素,不是则隐藏pop

js实现

$(document).bind(‘click‘, function(e) {
    var e = e || window.event; //浏览器兼容性
    var elem = e.target || e.srcElement;
    while (elem) { //循环判断至跟节点,防止点击的是pop子元素
        if (elem.id && elem.id == ‘pop‘) {
            return;
        }
        elem = elem.parentNode;
    }

    $(‘#pop‘).css(‘display‘, ‘none‘); //点击的不是pop或其子元素
});        

jquery实现

$(document).bind("click", function(e) {
    var target = $(e.target);
    if (target.parents(".pop").length === 0) {
        $(".pop").hide();
    }
})

参考:https://www.zhihu.com/question/26391484/answer/32635684
   http://www.cnblogs.com/dolphinX/p/3239530.html

时间: 2024-11-05 06:59:30

点击页面其他区域隐藏弹出层的相关文章

js的事件冒泡和点击其他区域隐藏弹出层

一.前言 在编写页面的时候,我们经常使用到弹出层.对于弹出层,原本的意义就是增加与用户的交互,提升用户的好感度.如果弹出层都没有较好的体验,那何谈通过交互来提升好感... 首先提出几个弹出层的注意点: 弹出层的界面需要统一,不一致的弹出层并不能增加美感,相反还会显得页面布局更加杂乱无章: 弹出层的设计一定要好看,按钮要符合项目的主色调: 弹出层的宽度固定屏幕占比,设置max-width,高度根据内容自适应: 点击其他区域隐藏弹出层... 二.正文 今天,主要说说点击其他区域隐藏弹出层.笔者被这个

点击弹出层以外的区域隐藏弹出层

我们店显示弹出层后,想让其消失,但又不想添加“X”来关闭,可以使用点击弹出层以外的区域来让该层消失的办法.下面如代码: $(".btn3").click(function(e){ e.stopPropagation();//阻止事件向上冒泡 $(".con-share").removeClass("hide"); }) //显示弹出层 $(document).click(function(e){ if(!$(".con-share&qu

点击页面其他地方关闭弹出层

html: <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> <style> #div { background: red; width: 100px; height: 100px; display: none; } </style> <script type="text/javascrip

react 点击空白处隐藏弹出层

点击空白处隐藏弹出层的原理是:在 document 上绑定事件来隐藏弹出层,这样点击任何元素的时候都会冒泡到 document 上,都会执行隐藏弹出层的功能.然后我们在不需要隐藏弹出层的元素上阻止冒泡即可. class Select extends Component { constructor(props) { super(props); this.state = { selected: props.list[0], showList: false }; this.showList = thi

jQuery点击自身以外地方关闭弹出层

$(function(){ $(document).bind("click", function (e) { if($(e.target).closest("#txt").length>0){ $("#tip").show(); }else{ $("#tip").hide(); } }); }); closest会首先检查当前元素是否匹配,如果匹配则直接返回元素本身.如果不匹配则向上查找父元素,一层一层往上,直到找到匹配

深入React事件系统(React点击空白部分隐藏弹出层;React阻止事件冒泡失效)

只关注括号内问题的同学,可直接跳转到蓝字部分.(标题起的有点大,其实只讨论一个问题) 两个在React组件上绑定的事件,产生冲突后,使用e.stopPropagation(),阻止冒泡,即可防止事件冲突,毫无问题. 今天是踩了个React事件的坑,需求可以简化为:点击框体以外的部分则隐藏框体.最直接的想法,document上绑定个事件,设置控制显示隐藏的state为false,在框体上绑定个事件,阻止冒泡.这样点击框体内部就不会触发document上的事件. 等写完了,发现一个问题,无法阻止冒泡

js 点击 隐藏弹出层

document.onmousedown = function(e){ var ev = document.all ? window.event : e; var _con = $("#cicon"); // 设置目标区域 if(!_con.is(e.target) && _con.has(e.target).length === 0){ // Mark 1 if(!$("#cicon").is(":hidden")){ $(&q

jQuery弹出层_点击自身以外地方关闭弹出层

<html> <style> .hide{display:none;} </style> <script type="text/javascript" src="jquery-1.6.1.min.js"></script> <script type="text/javascript"> $(document).ready(function() { $("div.do

Javascript实现页面弹出层效果

弹出层效果是一个很实用的功能,很多网站都采用了这种方式实现登录和注册,比如百度: 弹出层的特点:点击登录或注册的时候在页面的中间部分弹出一个登录或注册区域并且页面有一个遮罩层,而且登录框在遮罩层之上,也就是登陆框的z-index值要大于遮罩层的z-index值.当点击关闭或者遮罩层时关闭登录或者注册框(有的网页没有实现点击遮罩层关闭登录或注册区域的功能.). 最近也做了一个类似的弹出层的效果,先展示一下最终效果: 简单的说一下实现的过程. 首先是遮罩层.遮罩层是在页面动态加载的过程中创建的,因为