Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 通过单击主体上的任意位置关闭Div覆盖_Html_Overlay_Fade_Jquery - Fatal编程技术网

Html 通过单击主体上的任意位置关闭Div覆盖

Html 通过单击主体上的任意位置关闭Div覆盖,html,overlay,fade,jquery,Html,Overlay,Fade,Jquery,这就是我所做的: $('#keks-overlay').hide(); $('#click').click(function(){ $('#keks-overlay').toggle(450); }); $('#close-overlay').click(function(){ $('#keks-overlay').toggle(250); }); ​ jsFiddle: 这很好,但它仅通过单击“X”(#关闭覆盖)来显示/隐藏(切换) 我想做一些类似于fancybox效

这就是我所做的:

$('#keks-overlay').hide();  

$('#click').click(function(){
    $('#keks-overlay').toggle(450);
});

$('#close-overlay').click(function(){
    $('#keks-overlay').toggle(250);
});
​ jsFiddle:

这很好,但它仅通过单击“X”(#关闭覆盖)来显示/隐藏(切换)

我想做一些类似于fancybox效果的事情:点击全身的任何地方就会淡出

感谢您的帮助。

请尝试(文档准备就绪时)

然后获取对文档的所有单击,检查inoverlay变量,如果为false,则隐藏覆盖,否则什么也不做。如果您有一个按钮首先打开覆盖,请确保在截取文档上的单击时,它不是正在单击的按钮

$(document).click(function(e){
    if(inoverlay && (e.target.attr('id') != buttonForOverlay.attr('id') )) {
        closeOverlay();
    }
});

您可以将事件处理程序添加到包含整个页面(或文档本身)的
div
,并在该处理程序中添加覆盖

$("#somebody").click(function() {
    $('#keks-overlay').hide(250);
});
但是,如果要防止对覆盖本身的单击触发
hide()
,可以向覆盖添加返回false的事件处理程序(以防止事件冒泡),或者将覆盖放置在保存其余内容的
div
之外(这是因为叠加具有绝对定位)


WOW-真棒又简单的男人,谢谢分享和更新小提琴,非常酷
$("#somebody").click(function() {
    $('#keks-overlay').hide(250);
});