头像列应通过 cols 的 templet 返回 img 标签,绑定事件委托调用 layer.photos();photos.data 必须为含 src 字段的数组,需校验 URL 有效性并确保 layer 模块已加载。
表格中头像列如何渲染为可点击的图片标签
直接在
配置里用
返回带
的
即可,但注意不能写内联 js(如
),
layui
会过滤。正确做法是绑定事件委托或用
配合
。
常见错误是把大图 URL 写死,或漏传
参数导致
报
。
头像字段值必须是完整可访问的图片 URL(如
),相对路径需补全
不要在
里写
—— Layui 会清空该属性
推荐用
防止触发行点击事件(如果表格启用了
)
如何用
正确显示单张大图
默认期望接收一个包含
对象的配置,而该对象必须有
数组。即使只看一张图,也要包装成数组,否则报错。
示例代码片段(放在
后的
回调或外部事件监听中):
必须是数组,哪怕只有一项
字段值要能被浏览器直接加载,建议提前做空值校验:
不建议在
中直接调用
,因为此时 DOM 尚未完全挂载,容易触发渲染异常
为什么点击后没反应?检查这三处
最常卡在这几个地方:URL 跨域、layer 模块未加载、图片字段为空或格式错误。
基于Layui自定义内容轮播插件
基于Layui自定义内容轮播插件是一款表格数据为ajax加载的本地json数据,本地查看会有跨域问题导致数据不能显示。
下载
确认已引入
模块:
检查控制台是否报
错误 —— 如果头像来自不同域名且服务端没配
,
会静默失败
打印
看是否为
或
;某些接口返回的是 base64 字符串,
不支持直接渲染 base64 图片(需转为 blob URL 或存为临时文件)
进阶:支持多图预览并定位当前头像
如果用户列表每行都有头像,且希望从某一行点击后,在相册中能左右滑动查看其他人的头像,就得把整页数据的头像地址收集起来,并传入
,再用
参数指定初始索引。
先用
获取当前页全部数据(注意不是
,后者不含分页过滤后的结果)
遍历生成
数组时,过滤掉空头像,同时记录当前点击项的下标作为
是从 0 开始的整数,别传字符串或
这个逻辑稍复杂,容易在分页切换后还沿用旧缓存,所以每次点击前最好重新生成
数组,而不是复用全局变量。
colstempletonclickjavascript:void(0)layui.use('layer')layer.photos()datalayer.photos()Cannot read property 'length' of undefinedhttps://xxx.com/avatar.jpgtempletonclick="layer.photos(...)"event.stopPropagation()rowClicklayer.photos()layer.photos()photosdatatempletdone
photos.datasrcif (!avatar) returntempletlayer.photos()layerlayui.use(['table', 'layer'], function(){...})CORSAccess-Control-Allow-Originlayer.photos()obj.data.avatarundefinednulllayer.photos()photos.datastarttable.cache['test']table.getData('test')datastartstartundefineddata