jQuery:在元素本身上单击正文时隐藏()框,但不是()
jQuery: hide() box when clicking on body but not() on element itself?
我的 DOM 中有一个<a href="#" id="btn">Show Box</a>
somwhere。 此外,我有一个默认设置为 display:none;
的div#overlay
。
// Toggle Overlay
$('#btn').click(function(e) {
e.preventDefault();
$('#overlay').toggle();
})
$('body').not('#btn, #overlay').click(function() {
if ( $('#overlay').is(':visible') ) $('#overlay').hide();
});
为什么这不起作用?我希望#btn
在单击它时切换((覆盖层。但是,当叠加层可见并且我单击文档上的任意位置(#btn
本身或#overlay
除外(时,我希望叠加层也被隐藏。
您正在body
上捕获一个click
,该本身永远不会#btn
或#overlay
,因此它无法按预期工作。您需要检查的是event.target
即
$('body').click(function(e) {
var target = $(e.target);
if(!target.is('#btn') && !target.is('#overlay')) {
if ( $('#overlay').is(':visible') ) $('#overlay').hide();
}
});
使用 event.target.id
比较点击区域的id
$('body').click(function(e) {
if(e.target.id != 'btn' && e.target.id != 'overlay')
if ( $('#overlay').is(':visible') ) $('#overlay').hide();
})
相关文章:
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- JQuery在单击正文时隐藏上下文菜单
- jQuery/JS正在获取导航菜单,以便在单击正文时隐藏
- 当缺少正文时,隐藏表格
- 如果正文不是滚动的内容,有没有办法在滚动时隐藏浏览器
- 隐藏滚动条会导致正文向上滚动
- 隐藏在正文单击EXPT项目ID =某物
- 溢出隐藏添加在删除滚动条的正文标签中
- 在单击标题时隐藏/显示动态创建的表的正文
- Twitter 引导弹出窗口 :如何在不使用正文/文档事件处理程序的情况下在外面单击时隐藏它
- 隐藏正文直到加载,jQuery淡出而不是javascript隐藏
- 隐藏正文,直到外部资源(异步加载)加载
- javascript,用于在单击正文中的任何位置时隐藏
- 显示和隐藏菜单 当您单击正文时
- 如何修改我的函数以默认隐藏消息正文并在单击时显示正文?
- jQuery或Javascript的隐藏元素,如果可见时,点击正文的其他地方
- jQuery:在元素本身上单击正文时隐藏()框,但不是()
- 单击文档正文时隐藏iPad键盘
- 在正文单击时隐藏子菜单
- 显示弹出窗口时在模式弹出窗口中打印内容,但如果隐藏模式弹出窗口则打印正文