layer 是一款非常优秀的弹窗控件,最近在使用 layer 做开发的时候遇到一个需求:layer 子窗体关闭后向父窗体传值,然后父窗体根据传值决定下一步操作。
如果只是单纯的子窗体关闭后,父窗体进行相应操作那么我们可以使用父窗体的 end 方法:
示例 1,子窗体关闭后父窗体刷新:
子窗体代码:
window.parent.layer.closeAll();
父窗体代码:
$("#new").on('click',function(){
var url = "{:url('index/file/create')}";
layer.open({
type: 2,
title: '新增案卷',
shadeClose: true,
shade: 0.5,
area: ['380px', '300px'],
content: [url],
end: function () {
location.reload();
}
});
})
上面代码在子窗体中调用父窗体的关闭代码,然后利用父窗体的 end 方法实现响应,达到子窗体关闭后父窗体做出响应。
但是如果我们有更高的需求,比如说根据子窗体关闭时传的值来决定父窗体是刷新还是跳转,那怎么办呢?
示例 2,子窗体关闭后向父窗体传值,然后父窗体根据传值决定下一步操作:
子窗体代码:
parent.callback(data.data);
window.parent.layer.closeAll();
父窗体代码:
//layer 子窗体控制父窗体
function callback(id){
if(id>0){
var url = "{:url('index/file/archives')}?id="+id;
location.href = url;
}else{
location.reload();
}
}
上面代码在子窗体中先调用父窗体定义的回调函数,然后在父窗体定义对应的回调函数即可。
声明:1、本博客不从事任何主机及服务器租赁业务,不参与任何交易,也绝非中介。博客内容仅记录博主个人感兴趣的服务器测评结果及一些服务器相关的优惠活动,信息均摘自网络或来自服务商主动提供;所以对本博客提及的内容不作直接、间接、法定、约定的保证,博客内容也不具备任何参考价值及引导作用,访问者需自行甄别。2、访问本博客请务必遵守有关互联网的相关法律、规定与规则;不能利用本博客所提及的内容从事任何违法、违规操作;否则造成的一切后果由访问者自行承担。3、未成年人及不能独立承担法律责任的个人及群体请勿访问本博客。4、一旦您访问本博客,即表示您已经知晓并接受了以上声明通告。







