自定义图标按钮需用 lay-template 模板语法并配合 table.on('toolbar(filter)') 监听,通过 lay-event 区分操作,禁用内联 JS;图标不显示常见于 filter 不匹配、字体加载失败或误混行工具栏事件。
默认 toolbar 配置只认内置图标名(如 refresh、add),直接写 <i class="layui-icon"></i> 会被当纯文本渲染,不执行 html 解析 —— 这是新手最常卡住的地方。
必须用 toolbar 的模板字符串语法,且开启 parseData 或用 lay-template 手动编译:
script type="text/html" 模板,用 id 关联table.render() 中的 toolbar 项填 #myToolbar(对应模板 ID)<i class="layui-icon"></i> 导出,图标会正常渲染toolbar 模板里怎么传参或绑定点击事件?模板本身不自动绑定事件,得靠 table.on('toolbar(filter)') 监听,再根据 event 字段区分按钮。Layui 不会把 DOM 元素传进来,只给一个字符串标识。
实操要点:
lay-event="export" 给按钮加事件名,不要用 onclick
if (event === 'export') { ... } 分支处理table.checkStatus('id') 主动获取不是代码没写,而是被几个隐性规则拦住了:
id(elem 选项)和 filter(data-filter 属性)必须严格匹配监听事件里的字符串,大小写敏感layui/css/layui.css 和对应字体)加载失败时,<i> 标签会空着,但按钮仍能点 —— 建议用浏览器开发者工具检查 Network 面板里 iconfont 请求是否 404toolbar 但又想操作某一行,别忘了:工具栏事件和行工具栏事件是两套监听,不能混用 event 名可以,但要绕过 layui-icon 类的样式干扰。Layui 的 .layui-icon 会强制设置 font-size 和 line-height,直接塞 SVG 容易错位。
稳妥做法:
<span class="custom-icon">,并加 style="display:inline-block;vertical-align:middle;"
layui-icon 类,避免样式污染width="16" height="16"),不然在工具栏里可能塌陷<use xlink:href>,建议用完整 SVG 标签lay-event 和对应的 table.on() 监听逻辑,图标只是表皮。