layer父子层之间的常用操作

访问父页面的方法或者值的方法

访问父页面元素值

var parentId=parent.$("#id").val();//

访问父页面方法 

var parentMethodValue=parent.getMethodValue();//

关闭弹出层的问题

大概分成以下三种情况:

对应当前页面的某个弹出层

var index=layer.open();
var index=layer.alert();
var index=layer.load();
var index=layer.tips();

这样弹出的层都有对应的索引,需要关闭他们的时候直接关闭对应的层即可:layer.close(index);

如果是关闭最新的弹出层的时候

layer.close(layer.index)  它获取的始终是最新弹出的某个层,值是由layer内部动态递增计算的

 

如果在子窗口中弹出对应的layer层时候,如要关闭的时候一般采用如下方法

在iframe页面关闭自身时

var index=parent.layer.getFrameIndex(windown.name);
parent.layer.close(index);

此方法一般用于在iframe页关闭自身时用到

//假设这是iframe页
 var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
 parent.layer.close(index); //再执行关闭

在实际项目中碰到如下情况

A-父iframe  b-子iframe 在b中需要打开一个新的弹出层

top.layer.open({
                     type: 2,//这就是定义窗口类型的属性
                     title: '客服登录',
                     shadeClose: true,
                     shade: 0.3,
                     offset: "20%",
                     shadeClose : false,
                     area: ['60%','60%'],
                     content: res.data
                 });
var index = parent.layer.getFrameIndex(window.name);
  top.layer.close(index);

 

关闭弹出层的子页面窗口

var index = parent.layer.getFrameIndex(window.name); //获取窗口索引 
parent.layer.close(index);//关闭弹出的子页面窗口

在子页面刷新父页面

parent.location.reload(); // 父页面刷新

二 父子层之间传值,传参

父子层之间传值传参的核心方法为:

layer.getChildFrame(selector, index) - 获取iframe页的DOM

其中,selector为iframe页面的选择器,用来选中iframe页面的元素。Index为层的索引。

1 在父页面上完成对子页面的数据渲染

在layer弹出层成功够,会回调success方法,重写该方法即可实现对子页面的数据渲染。

Layer.open(
{
success:function(layero, index){
Var body = layer.getChildFrame(“body”,index);//绑定父子之间的关系,用于数据传递,缺少则无法传递
var iframeWin = window[layero.find('iframe')[0]['name']]; //得到iframe页的窗口对象
//获取子页面的元素,进行数据渲染
}
})

2 在子页面完成数据渲染

Layer.open(
{
success: function(layero, index){
Var body = layer.getChildFrame(“body”,index);//绑定父子之间的关系,用于数据传递,缺少则无法传递
var iframeWin = window[layero.find('iframe')[0]['name']];//得到iframe页的窗口对象
//调用子页面的方法,将父页面的值作为参数传递过去
iframeWin.method(pre);
}
})