写代码的时候经常会碰到点击某个按钮弹出一个框,点击除了按钮的其他部分时隐藏框,隐藏框的时候可能什么都不用做,可能要做一些什么。下面拿两个例子分别来说。
一、登录框。没登陆之前,点击需要登录才能用的应用时,一点击就会弹出层登陆框让登陆,若不登录点击登陆框之外的区域登录框消失。
这种情况有一个很大的特点:点击空白区域时除了隐藏登陆框别的什么都不用做,此时可以考虑使用遮罩层。
因为:遮罩层覆盖整个页面,只有登录框浮在上面。点击登录框区域时点不到遮罩层,点登陆框之外的区域全部都是遮罩层,这样子检测起来也比较简单。
这里写个简单的伪代码吧:
遮罩层代码:
<div id="zhegai" style="display:none;width:100%;height: 100%;top:0px;left:0px;position:absolute;filter:Alpha(Opacity=0);z-index:1000;background:#aaa;-moz-opacity: 0;opacity:0;"></div>
登陆框代码:
<div id="container" style="margin: 0px auto;top:30%;left: 30%;width: 688px;position: absolute;z-index:2000;display:none;">....</div>
有两个注意点:
1、为了视觉效果,我这里的遮罩层是完全透明的,登陆框弹出来时看起来只有一个登录框。
2、登陆框所在div的z-index值一定要比遮罩层所在div的z-index大,这样子登陆框才能浮在遮罩层之上,否则就在之下了。
JS代码:
$('.sinput').click(function(){ var $zhegai = $("#zhegai"); $zhegai.show();//遮罩层显示出来 $("#container").show();//登陆框显示 //点击遮罩层的时候(因为登陆框浮在遮罩层之上,所以点击登录框时点击不到遮罩层) $zhegai.bind("click",function(){ $("#container").hide();//登陆框隐藏 $(this).hide();//隐藏遮罩层 }); });
二、软键盘。今天写了一个这样子的例子:用JS自定义一个软键盘,点击“查询”按钮所对应的文本框和需要填写数字的文本框时调出软键盘,点击其他空白区域时隐藏软键盘。
这个例子的特点:隐藏软键盘之后还需要干点别的,譬如我用软键盘输入完了点击一下查询按钮此时就需要隐藏软键盘和执行查询操作,譬如输入数字之后自动校验输入的数字是否符合要求。
为什么不适用遮罩层呢?是因为:需要点两下,感觉上不好。按照常理,我输完数据之后直接点击查询按钮进行查询,若是使用遮罩层你点的这一下只是点在遮罩层上根本不会触发查询事件,要想查询就还得再点一下,这样子算下来我查个数据还得点两下,内行的人知道是怎么回事外行的就得说这东西做的太垃圾了。
解决办法:检测整个document,每次点击的时候查看一下是否点击了查询文本框、数字文本框、软键盘所在div,若都不是且软键盘处于显示状态,就隐藏。
处理代码如下:
$(document).bind("click",function(e){ var $target = $(e.target); //alert("点击查询框:"+$target.is("#querySuppliername")+"\n点击了软键盘:"+$target.is("#keyboard>li")+"\n点击了数字框:"+$target.is(".num")); if(!$target.is("#keyboard>li") && !$target.is("#querySuppliername") && !$target.is(".num") && $("#container").is(":visible")){ $("#container").hide(); } e.stopPropagation(); });
相关推荐
- **全局点击事件**: 通过`document.onclick`监听整个页面的点击事件,当用户点击页面除弹出层外的任何地方时,调用`hide('pop')`,实现关闭弹出层的效果。 5. **DOM操作**: - **元素获取**: 使用`document....
本文实例讲述了jQuery实现点击自身以外区域关闭弹出层功能。分享给大家供大家参考,具体如下: 原理参考前面一篇《JS使用遮罩实现点击某区域以外时弹窗的弹出与关闭功能》,小编顺便对原文区域外点击bug进行了修改,...
标题“空白处点击关闭DIV层”涉及到的是网页交互设计中的一个常见需求,即通过点击页面上的空白区域来隐藏或关闭某个浮动的DIV层。在网页设计中,DIV元素常用于布局和内容组织,而实现这一功能通常是通过JavaScript...
本文实例讲述了JS使用遮罩实现点击某区域以外时弹窗的弹出与关闭功能。分享给大家供大家参考,具体如下: HTML部分: 点击除开div的区域可以弹出弹窗 <div id=cover></div> 点击除开div和弹窗的区域可以关闭弹窗 ...
2. **弹出层效果**:当用户点击图片时,图片会以弹出层的形式显示,将用户的注意力集中到当前图片上。这种方式比在原位放大更符合用户的浏览习惯,避免了页面布局的混乱。 3. **上下翻页**:如果一组图片需要展示,...
在Vue.js中,有时我们需要实现一个功能,即当弹出框或者Popover显示后,用户点击页面空白区域可以自动隐藏这些元素。以下将介绍三种实现这一功能的方法:手动监听判断、自定义指令以及使用遮罩层。 ### 第一种方式...
jQuery 是一个广泛使用的 JavaScript 库,它简化了DOM操作、事件处理以及动画效果等任务,因此在创建和管理弹出层时非常有用。本文将详细讲解三个使用 jQuery 实现关闭弹出层的方法。 ### 示例1:点击页面空白处...
主要功能是点击按钮弹出层显示,然后通过点击页面任意位置都能关闭弹出层显示效果,主要是$(document).click的操作应用。演示 Demo,效果源码: CSS代码: * { padding: 0; margin: 0; } #btnShow{ margin: 100px ...
// 单击空白区域隐藏弹出层 $(document).click(function(event) { $("#racePop").hide(speed); }); // 单击弹出层则自身隐藏 $("#racePop").click(function(event) { $("#racePop").hide(speed); }); }); ...
这个实例主要涉及了 jQuery 的事件处理、DOM 操作以及 CSS 样式设计,使得在用户点击特定元素后,页面背景会变暗并显示一个遮罩层,同时点击遮罩层或页面其他空白区域可以关闭该遮罩层。 首先,我们来看 jQuery ...
当用户点击页面上的某个元素(如按钮)时,模态框被触发弹出,而在某些情况下,用户可能希望在模态框显示后能够通过点击页面的空白区域来关闭它。这就涉及到一个常用的技术手段——事件的阻止冒泡。 事件冒泡是...
5. **关闭弹出层**: ```javascript $(document).click(function(event){ $("#divPop").hide(speed); }); ``` 为`document`绑定点击事件,当用户点击页面任意空白区域时,弹出层会隐藏。 6. **处理弹出层点击...
- **函数封装**:将功能相近的代码封装成函数,如关闭弹出层的逻辑,图片加载完成后的逻辑等,使得代码结构更加清晰。 - **事件绑定**:将事件监听器绑定到动态创建的DOM元素上,确保事件能够正确响应。 - **变量...
在实例中,通过这种方式为 `document` 绑定关闭弹出层的函数,以确保不会覆盖其他事件。同时,使用 `event.stopPropagation()` 阻止事件冒泡,防止在显示弹出层后立即关闭。 ### 7. `offset()`, `height()` 与位置...
通过这种方式,我们不仅实现了弹出层的动态显示和隐藏,还确保了点击弹出层时不会立即关闭。这个简单的例子展示了jQuery如何使动画实现变得简单易懂。 此外,jQuery的动画方法还支持链式调用和自定义缓动函数,可以...
问题的根源在于Bootstrap的默认行为:当用户点击模态框外的空白区域时,最顶层的模态框会关闭,同时其对应的阴影遮罩也会被移除。但在多模态框叠加的情况下,如果一次性关闭所有模态框,只有最上面的那个模态框的...
-Grid增加GetNoSelectionAlertInParentReference函数,用来表示没有选中任何一项时在父页面弹出对话框的JS代码。 -修正IE7下不能以下划线作为CSS中类名的前缀的BUG(feedback:Steve.Wei)。 -添加定时器控件Timer,...
-Grid增加GetNoSelectionAlertInParentReference函数,用来表示没有选中任何一项时在父页面弹出对话框的JS代码。 -修正IE7下不能以下划线作为CSS中类名的前缀的BUG(feedback:Steve.Wei)。 -添加定时器控件Timer,...
在弹出的对话框中,将目标元素设置为“gg1”,这意味着点击关闭按钮时,广告会渐隐消失。 4. **实现广告出现效果**: 为了在鼠标悬停在特定位置时显示广告,你需要选择那个位置的AP Div,比如标题栏。在行为面板中...