layer回调函数
获取本弹出层的值,如果弹出层内容不包含页面,则直接用this获取,如下例中的alert(this.content);alert(this.yes);alert(this.title);alert(index);alert(this.offset);等,
如果弹出层内容包含其他网页,则需要通过layero参数获取该其他网页的元素内容:
例如:获取该其他页面中id为jqGridY的DIV元素:
$(layero).find('iframe').contents().find('#jqGridY');
即:$(layero).find('iframe').contents().find('#id');
或:
var body = layer.getChildFrame('body', index);
body.find('input').val('Hi,我是从父页来的');
console.log(body.html())
获取该其他页面的window对象:
$(layero).find('iframe')[0].contentWindow
//得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();即JS方法;
或:
var iframeWin = window[layero.find('iframe')[0]['name']]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
那么,如何在弹出层中获取父页面元素呢
layer.open({
title:"dfsdfdf",
content: '测试回调',
yes: function(index, layero){
//do something
alert(index);
alert(this.title);
alert(this.content);
alert(this.yes);
alert(this.fixed);
alert(this.offset);
//layer.close(index); //如果设定了yes回调,需进行手工关闭
}
});
【layui】【jquery】通过layero获取iframe的元素
$(layero).find('iframe').contents().find('#jqGridY');
获取window对象
$(layero).find('iframe')[0].contentWindow
//得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
-
var form = $(layero).find("iframe").contents().find("#file-form");//获取子页面元素
layer.getChildFrame(selector, index) - 获取iframe页的DOM
当你试图在当前页获取iframe页的DOM元素时,你可以用此方法。selector即iframe页的选择器
layer.open({
type: 2,
content: 'test/iframe.html',
success: function(layero, index){
var body = layer.getChildFrame('body', index);
var iframeWin = window[layero.find('iframe')[0]['name']]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
console.log(body.html()) //得到iframe页的body内容
body.find('input').val('Hi,我是从父页来的')
}
});通过layer弹出的ifram。想要获取里面的元素并且绑定相应的事件。
以前一直不知道layero是什么意思。
可以通过下面的代码自己体会一下
-
-
layer.open({
-
type: 2,
-
title: '文件管理',
-
shadeClose: true,
-
shade: 0.8,
-
area: ['70%', '60%'],
-
content: url+"?path="+path //iframe的url
-
,btn: ['确定', '全选', '反选','重置']
-
,btn2: function(index, layero){
-
//按钮【按钮二】的回调
-
var form = $(layero).find("iframe").contents().find("#file-form");//获取子页面元素
-
//使用#id就可以获取到弹出层里面的子元素。前面的写法都是固定的。
-
form.find(":checkbox").prop("checked", true);
-
-
return false //开启该代码可禁止点击该按钮关闭
-
}
-
-
});
当layer以iframe层的方式弹出新的窗口(子页面),如何在子页面中访问父页面的元素和函数。
1、访问父页面元素值
1var
parentId=parent.$(
"#id"
).val();
//访问父页面元素值
2、访问父页面方法
1var
parentMethodValue=parent.getMethodValue();
//访问父页面方法
3、如何关闭弹出的子页面窗口
12var
index = parent.layer.getFrameIndex(window.name);
//获取窗口索引
parent.layer.close(index);
//关闭弹出的子页面窗口
4、如何从子页面执行刷新父页面操作
1parent.location.reload();
// 父页面刷新
附:layer弹出多个iframe找到父页面的方法
父页面:
function aa(){
var index = parent.layer.getFrameIndex(window.name);
var iframeName = 'layui-layer-iframe'+index;
openDialog1('选择XXX', '${ctx}/*****,'800px', '500px',iframeName);
}
function openDialog1(title,url,width,height,target){
top.layer.open({
type: 2,
area: [width, height],
title: title,
maxmin: true, //开启最大化最小化按钮
content: url ,
btn: ['确定', '关闭'],
yes: function(index, layero){
var body = top.layer.getChildFrame('body', index);
var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
var inputForm = body.find('#inputForm');
var top_iframe;
if(target){
top_iframe = target;//如果指定了iframe,则在改frame中跳转
}else{
top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
}
inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
if(iframeWin.contentWindow.doSubmit(top_iframe) ){
top.layer.close(index);//关闭对话框。
top.window[iframeName].frames.location.reload();//刷新父亲
}
},
cancel: function(index){
}
});
}
//子页面回调方法
function addRecord(name,chainName){
alert(name);
}子页面
function doSubmit(iframeName) {
var sel=$("tbody tr td input.i-checks:checked");
var size = sel.size();
if(size==0){
top.layer.alert('请至少选择一条数据!', {icon: 0, title:'警告'});
return false;
}else{
for(var i=0;i<size;i++){
top.window[iframeName].addRecord(sel[i].name,sel[i].value);
}
return true;
}
}自己总结的一个很好的例子:
layer.open({
type: 1,
area: ['600px', '360px'],
shadeClose: true, //点击遮罩关闭
content: '\<\div id="aaa" style="padding:20px;">自定义内容\<\/div>',
success: function(layero, index){
alert(layero.find("#aaa").text());
}});
-
layer.getFrameIndex(windowName) - 获取特定iframe层的索引
layer.getFrameIndex(windowName) - 获取特定iframe层的索引
此方法一般用于在iframe页关闭自身时用到。
/
/
假设这是iframe页
var index
=
parent.layer.getFrameIndex(window.name);
/
/
先得到当前iframe层的索引
parent.layer.close(index);
/
/
再执行关闭
layer.getFrameIndex(windowName) - 获取特定iframe层的索引
-
layer.getFrameIndex(windowName) - 获取特定iframe层的索引
此方法一般用于在iframe页关闭自身时用到。
1
2
3
|
/ / 假设这是iframe页 var index = parent.layer.getFrameIndex(window.name); / / 先得到当前iframe层的索引 parent.layer.close(index); / / 再执行关闭 |