情况一:遮罩层包含了全部内容(点击事件源,以及用来排除的位置)
html:

js:
$(".mark").on("click", function(e) { //点击灰色区域关闭模态
if(e.target == $(".mark")[0]) {
$(".mark").hide();//需要关闭的弹窗
}
e.stopPropagation();
});
情况 二:遮罩层与事件源不在同一容器内
html:

js:
$(document).on("click", function(e) {
//齿轮及选项外关闭操作面板
if(e.target != $(".btn")[0] && e.target != $(".item")[0]) {
//若点击以上2处以外的地方,则关闭弹窗
$(".panel").hide();//弹窗容器
}
e.stopPropagation();
});
目前也只会这样程度的,办法很死,若有人有灵活的办法,欢迎赐教。
原文:https://www.cnblogs.com/JaneBlog/p/9549998.html