zoukankan      html  css  js  c++  java
  • 点击弹出层之外的任何区域隐藏弹出层

    修改了原先页面的一个下拉框的功能,用div弹出层来模拟select的原始功能,好处是可以任意的修改下拉框的样式,例如设置它的高度等等(IE中不允许设置原始的select元素的高度),坏处是兼容问题一大堆,不过还好兼容问题不算太麻烦,期间还遇到了一个问题:如何在弹出层弹出以后,点击弹出层之外的任意区域隐藏弹出层

    此种场景肯定存在几个必须存在的要素:

    要素一:触发元素;

    要素二:触发元素的Click事件;

    要素三:弹出层;

    场景流程:

    Click -> 触发元素 -> 弹出层

    解决方案:(用伪代码表示下)

    1 var Obj = 触发元素;
    2 Obj.hover(function(){
    3 $('body').unbind('mousedown');
    4 }, function(){
    5 $('body').bind('mousedown', function(){
    6 ...这个匿名函数里调用隐藏弹出层的代码...
    7 });
    8 });

     即:在鼠标悬浮于触发元素之上的时候,为body解除mousedown的事件绑定;移出的时候再为body元素绑定mousedown事件;

    为什么要选用mousedown事件呢(而不用click事件)?这应该是为了防止事件冒泡对触发元素的click事件产生不可预知的干扰,经测试,代码运行正常。



  • 相关阅读:
    《思帝乡·春日游》——[唐]韦庄
    《临江仙·梦后楼台高锁》——[宋]晏几道
    《西江月·夜行黄沙道中》——辛弃疾
    CentOS7 安装 MySQL 5.7.10
    CentOS6 下安装JDK7
    Makefile基础
    CentOS6 下Vim安装和配置
    CentOS6 下MySQL option file
    CentOS6 下编译安装 MySQL 5.6.26
    slice和substring的区别
  • 原文地址:https://www.cnblogs.com/catprayer/p/2093845.html
Copyright © 2011-2022 走看看