Layui layer.open 在 content 中嵌入数据表格并返回值的方法
本文介绍如何在 Layui 中使用 layer.open 打开包含数据表格的子页面,并通过 iframe 通信机制获取用户选中的表格行数据。核心步骤包括在父页面定义触发按钮、调用 layer.open 配置 content 指向子页面,并在 yes 回调中通过 window["layui-layer-iframe" + index].callbackdata() 获取子页面暴露的方法返回值,从而实现跨页面数据交互。
Layui layer.open 打开子页面数据表格并返回值的方法
在使用 Layui 开发的页面中,常遇到一种需求:通过 layer.open 打开一个包含数据表格的新窗口,并在该窗口中选中某一行数据,获取其值以便在父页面进行后续操作。

例如,简单的场景是选中某行后,获取并显示该数据的 ID 字段。
首先,需要在父页面(原始页面)中定义一个工具条按钮。
<button class="layui-btn" data-type="simulatePack">模拟</button>
接着,实现该工具条按钮的点击事件,用于触发打开新窗口。
simulatePack: function(){ //模拟操作
var checkStatus = table.checkStatus('box')
,data = checkStatus.data;
layer.open({
type:2
,area: ['800px', '600px']
,title:'请选择'
,content: 'container.html'
,maxmin: true
,btn: ['确认选择', '关闭']
,yes: function(index, layero){
var row = window["layui-layer-iframe" + index].callbackdata();
layer.alert("get:"+row);
// var row = $(layero).find("layui-layer-iframe")[0].contentWindow.callbackdata();
//可以使用ajax请求对数据进行进一步处理
layer.close(index);
},btn2: function(index, layero){
layer.close(index);
}
})
},
这里,变量 row 代表从新打开的子窗口中返回的数据值。
在子窗口中,需要定义一个名为 conId 的变量作为返回值,具体实现如下。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>layui</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" rel="external nofollow" media="all">
</head>
<body>
<table class="layui-hide" id="container" lay-filter="container"></table>
<script src="/layuiadmin/layui/layui.js" charset="utf-8"></script>
<script>
var conId;
layui.use('table', function(){
var table = layui.table;
table.render({
elem: '#container'
,url:'/container/listAll'
,page:true
,cols: [[
{type:'radio'}
,{field:'id', title: 'ID'}
,{field:'length', title: '长度'}
,{field:'width', title: '宽度'}
,{field:'height', title: '高度'}
,{field:'weightLimit', title: '承重限制'}
,{field:'volumn', title: '体积'}
,{field:'height', title: '高度'}
]]
});
//监听行单击事件(单击事件为:rowDouble)
table.on('row(container)',function(obj){
var data = obj.data;
conId = data.id;
//标注选中样式
obj.tr.addClass('layui-table-click').siblings().removeClass('layui-table-click');
});
});
var callbackdata = function () {
return conId;
}
</script>
</body>
</html>
通过上述配置,即可实现从 content 指定的子页面中获取并返回数据的功能。
以上介绍了 Layui 使用 layer.open 在 content 中打开数据表格并返回值的方法,供参考。
JS 怎么使用 pako.js 解压 gzip 数据流
2026-11-05 15:54:33
零基础先学JavaScript还是Python?对比学习难度与上手曲线
2026-11-05 14:47:40
JS代码反混淆:主流在线工具与本地软件推荐
2026-11-04 19:28:41
浏览器控制台查看格式化JSON有哪些实用技巧
2026-11-04 16:56:53
JS控制台打印基础:console.log语法与多参数用法
2026-11-04 09:23:11
