点击div外区域隐藏div操作(嵌套iframe页面)

本文介绍如何在正常页面和嵌套iframe场景下实现点击页面空白区域隐藏div。针对有遮罩层和无遮罩层的情况,提供解决方案,并详细讲解在iframe中操作父页面元素的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、正常页面

$(document).click(function(){
        $(dom).hide();//要隐藏的div
 });
 或者去除某一块
 $(document).on('click', function (e) {
		if ($(e.target).closest('#去除id').length == 0) {
			$("#隐藏id").hide();
		}
	});

这个是最基础的原型,如果是有弹窗和遮罩层的,点击遮罩层的部分关闭弹窗和遮罩层:

// 点击弹窗内容以外的地方关闭弹窗
.user-list-classify-mask:遮罩层
.user-list-classify:实际的小弹窗区域
	  $(".user-list-classify-mask").on('click', function (e) {
	    if ($(e.target).closest('.user-list-classify').length == 0) {
	    	 $(".user-list-classify-mask").hide();
	    } 
	  });
	  因为遮罩层是覆盖了整个屏幕的,所以一般就遮罩住了触发的那个元素,所以这个就不用除去触发的元素了

还有一种是没有遮罩层,但是会同步出现很多弹窗的list:

.pops:触发弹窗的元素
.ellipsis-pop:一开始隐藏的定位弹窗
有很多td
css:
.report-operation-pop{
position:relative;
}
.report-operation-pop img{
	width:20px;
	cursor:pointer;
}
.ellipsis-pop{
	position:absolute;
	right:0;
	top:49px;
	width:120px;
	background:#fff;
	-webkit-box-shadow: 0 0 6px rgba(0,0,0,.15);
    box-shadow: 0 0 6px rgba(0,0,0,.15);
    -o-box-shadow: 0 0 6px rgba(0,0,0,.15);
    -ms-box-shadow: 0 0 6px rgba(0,0,0,.15);
    -moz-box-shadow: 0 0 6px rgba(0,0,0,.15);
	border-radius:3px;
	padding:10px;
	box-sizing:border-box;
	z-index:999;
	display:none;
}
html:
<td class="t-a-l report-operation-pop">
    <img src="../../../include/images/dian.png" class="pops">
    <div class="ellipsis-pop">
        <a class="operation-btn">删除</a>
        <a class="operation-btn">详情</a>
        ……很多按钮
    </div>
</td>
js:
//操作栏的点击事件
	$("#report_table").on("click",".pops",function(){
		$(this).next().toggle();//显示隐藏toggle
		$(this).parents('tr').siblings().find('.ellipsis-pop').hide();//只能一个pop显示,其他的pop隐藏
		var topH = $(this).parents('td').outerHeight();
		$(this).next().css('top',topH/2+8)//pop的top值为td的高度的一半+一个适当的错开值
	})
	$(document).on('click', function (e) {//点击除pop之外的区域隐藏pop弹窗 但是要把触发的···去掉,不然点击···pop就不会show了
	    if ($(e.target).closest('.ellipsis-pop').length == 0 && $(e.target).closest('.pops').length == 0) {
	    	 $(".ellipsis-pop").hide();
	    } 
	});

二、嵌套iframe页面 (我实现的是点击子页面隐藏父页面的元素)

除了写正常页面的操作之外,也需要在子页面里面写第二个操作

$(document).click(function(){//父页面
        $(dom).hide();//要隐藏的div
 });
 $(document).click(function(){//子页面
 	$(dom,window.parent.document).hide();
 });

因为子页面里不能直接获取到父页面的元素,所以需要在子页面里面另外写:
$(dom,window.parent.document).hide();

补充:jquery中父子页面之间获取元素
在这里插入图片描述
父页面获取子页面元素:

$("#iframe的ID").contents().find("#iframe子页面的ID").click(); 

父页面调用子页面方法:

$("#iframe的ID")[0].contentWindow.子页面 js 方法(); 

子页面获取父页面元素:

$("#父页面元素ID" , parent.document);

子页面操作父页面方法:

window.parent.父页面 js 方法();
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值