可用 layer.title() 修改 type:2 弹窗标题,需先通过 parent.layer.getFrameIndex(window.name) 获取索引;或用 jQuery/原生 JS 通过 layer-id 精准定位修改任意类型标题,务必避免全局选择器。

需要在用户操作过程中实时更新已打开的 layui 弹窗标题,比如根据接口返回结果补充数量、切换状态后变更语义、或在 iframe 子页面中修改父层标题。
用 layer.title() 修改 type:2(iframe)弹窗标题
这是最简洁且精准的方式,仅适用于 type:2 类型的弹窗,调用时必须传入正确的索引值,否则会报错或无效。
第一步:在子页面中获取当前 iframe 所属弹窗的索引:var index = parent.layer.getFrameIndex(window.name)。window.name 是 layui 自动写入的唯一标识,不可手动修改。
第二步:调用 【parent.layer.title('新标题', index)】 更新标题。该调用立即生效,且只影响目标弹窗,不影响其他已打开的 layer 实例。
注意:如果子页面 DOM 尚未就绪就执行这行代码,会抛出 Cannot read property 'title' of undefined 错误。建议包裹在 $(document).ready() 或加 setTimeout(..., 30) 延迟执行。
用 jQuery 直接操作 DOM 修改任意 type 的标题
适用于所有弹窗类型(type:0/1/2/4),但必须依赖 layer.open() 返回的索引值进行精确筛选,否则多个弹窗时会互相覆盖。
方法一:保存索引并定位节点
打开弹窗时务必保存返回值:const index = layer.open({ ... })。这个 【index 是后续 DOM 定位的唯一依据】,不能丢弃或复用。
修改标题时使用 jQuery:$(`.layui-layer[layer-id="${index}"] .layui-layer-title`).text('上传成功')。layer-id 属性由 layui 内部自动生成,与你传入的 id 参数无关。
方法二:原生 JS 写法(无 jQuery 依赖)
document.querySelector(`.layui-layer[layer-id="${index}"] .layui-layer-title`).innerText = '处理中...'
切记不要用 $(".layui-layer-title") 这类全局选择器——当同时打开 3 个弹窗时,它会把全部 3 个标题都改成同一个内容。
在 success 回调中安全修改标题
很多人在 success: function(layero, index) { ... } 里直接改 $(".layui-layer-title"),结果偶发失败。这是因为 layero 是容器节点,而 .layui-layer-title 子节点可能尚未完成渲染(尤其启用了动画或自定义 skin 时)。
稳妥做法是加一层延迟查找:
success: function(layero, index) { setTimeout(() => { layero.find(".layui-layer-title").text("加载完成"); }, 50); }
如果用了自定义 skin,请检查 CSS 是否重置了 .layui-layer-title 的 display 或 color,导致文字不可见。


















