我有一个弹出窗口小部件的以下HTML:
<div id="popup">
<div class="popup-wrapper">
<div class="content">
<h1>TEST</h1>
</div>
</div>
</div>
使用CSS:它显示为NONE:
#popup {
display: none;
overflow: auto;
}
#popup .popup-wrapper {
background-color: #0D1014;
background-color: rgba(13,16,20,0.95);
height: 100%; width: 100%;
position: fixed; top: 0; left: 0; right: 0; bottom 0;
}
#popup .content {
background-color: #E8F0F3;
border: 1px solid #FFFFFF;
width: 300px;
position: fixed;
top: 50%; left: 50%;
margin-left: -150px;
margin-top: -140px;
padding: 20px;
overflow: hidden;
border-radius: 5px 5px 5px 5px;
-moz-border-radius: 5px 5px 5px 5px;
-webkit-border-radius: 5px 5px 5px 5px;
-webkit-box-shadow: 0px 0px 20px 0px rgba(0,0,0,0.5);
-moz-box-shadow: 0px 0px 20px 0px rgba(0,0,0,0.5);
box-shadow: 0px 0px 20px 0px rgba(0,0,0,0.5);
}
.no-scroll {
overflow: hidden;
height: 100%; width: 100%;
}
使用JavaScript点击链接时会显示弹出窗口:
$(".popup").on('click', function(e) {
$("#popup").fadeIn(200);
$("body").addClass("no-scroll");
});
问题是,如何仅在点击#popup
而不是.popup-wrapper
时隐藏.content
?
答案 0 :(得分:1)
20分钟前我自己遇到过这个问题 代码:
$("#popup").on('click', function(e) {
if ($(e.target).closest(".content" /*or any other selector here*/).length > 0) {return false;}
$("#popup").fadeOut(200);
$("body").addClass("no-scroll");
});
答案 1 :(得分:0)
您可以通过添加以下内容阻止.content
对$('.content').click(function(e){ e.stopPropagation() })
$('#popup').click(function(){ $(this).fadeOut() })
的任何点击:
{{1}}
答案 2 :(得分:0)
使用:not
伪选择器过滤掉.content
DIV:
$(".popup-wrapper:not(.content)").click(...)
答案 3 :(得分:0)
尝试以下代码:
jQuery('.popup-wrapper').click(function(){
jQuery('#popup').hide();
});