讲师中心 微信公众号
AI工具推荐 视频效率加速

Layui表格tool工具栏如何根据权限动态显示按钮

落宇酱_7189

落宇酱_7189

发布时间:2026-05-29 09:02:47

|

420人浏览过

|

来源于php中文网

原创

toolbar必须在table.render()前完成角色过滤,依据window.USER_ROLE等同步权限数据动态拼接HTML字符串,禁用异步后处理或DOM隐藏;按钮配置应统一为带role字段的数组,拼接用map().join()防XSS;lay-event须全局唯一;title提示应在done回调中通过data-title预埋并补全;操作列hover显隐需事件委托+防抖+fixed区域适配;权限变更须销毁重render。

toolbar 必须在 table.render() 前完成角色过滤

layui 的 toolbar 参数只接受 html 字符串或 dom 节点,不支持运行时条件渲染。所谓“按权限显示”,本质是:在调用 table.render() 之前,就根据 window.user_role(或 localstorage、api 返回值)筛出当前用户能点的按钮,拼成字符串传进去。

常见错误是全量渲染再 $('.layui-btn[lay-event="export"]').hide() —— 按钮 DOM 还在,右键审查就能 show 出来,甚至直接触发绑定函数,后端鉴权变成最后一道防线。

  • 角色信息必须在 JS 执行时已就绪,不能依赖异步请求结果后再 render 表格(否则会闪一下所有按钮)
  • 按钮配置建议统一定义为数组对象,每个带 role 字段,例如:[{id: 'add', text: '新增', role: ['admin', 'editor']}]
  • 拼接时用 map().join(''),避免 innerHTML += 引入 XSS 风险(尤其当按钮文字来自后端时)
  • lay-event 值必须全局唯一,否则 table.on('toolbar(demo)') 无法正确分发事件

按钮提示文字(title)得在 done 回调里加

直接在 toolbar 字符串里写 <button title="导出"> 看似可行,但 Layui 内部会对字符串做简单转义,双引号、& 符号容易被破坏,导致 title 截断或失效。更稳的方式是等表格渲染完,在 done 回调里用 layui.$ 找到按钮补 title 属性。

  • 推荐用 data-title 预埋提示文案,比如:<button data-event="export" data-title="导出当前页数据">导出</button>
  • 在 done 里统一处理:layui.$('[data-title]').each((i, el) => layui.$(el).attr('title', layui.$(el).data('title')))
  • 不要用 CSS :hover::after 模拟 tooltip —— Layui 表格有行复用机制,hover 状态会错乱
  • 移动端 Safari 和部分安卓 WebView 原生 title 不显示,这是平台限制,不是你代码的问题

操作列按钮 hover 显隐必须用事件委托

想实现“鼠标移到某行,才显示该行的操作按钮”,不能给 td 写 onmouseover,也不能靠 CSS :hover。因为 Layui 表格滚动、分页、排序都会重绘 DOM,静态绑定的事件会丢失,:hover 则会因行复用导致状态错位。

深蓝色网站后台管理系统layui框架模板-AdminPro
深蓝色网站后台管理系统layui框架模板-AdminPro

一款深蓝色网站后台管理系统layui框架模板

下载
  • 操作列模板里必须包裹一层固定 class 的容器,例如:<div class="opt-btns"><button lay-event="edit">编辑</button></div>
  • 在 done 回调中监听表格容器的 mouseenter/mouseleave,用 e.target.closest('tr') 定位当前行,再找里面的 .opt-btns 切换 layui-hide
  • 加 200ms 防抖,避免快速划过时按钮频繁闪现
  • 如果操作列用了 fixed: 'right',要额外监听 .layui-table-fixed-r 区域,否则右侧固定列 hover 失效

权限变化后不能只改 DOM,得重 render

用户切换角色(比如从 editor 升为 admin)后,仅靠 JS 修改 toolbar DOM 或加按钮 class 是不够的。Layui 表格内部状态和事件绑定都基于初始化时的配置,手动增删按钮容易导致 table.on('toolbar()) 监听失效,或者点击无响应。

真正安全的做法是:销毁原实例(table.destroy('demo')),重新执行一遍带新角色过滤逻辑的 table.render()。虽然看起来重,但比修各种状态不一致的 bug 更省时间。

注意:重 render 时要显式传入 where、page、initSort 等参数,否则会丢失搜索条件、当前页码和排序状态。

热门AI工具

更多
DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2523

2023.08.11

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

5463

2023.10.09

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

6490

2024.03.19

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

6118

2024.03.22

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

863

2024.05.22

OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

20

2026.10.16

OpenJDK怎么配置Java开发环境
OpenJDK怎么配置Java开发环境

怎样用OpenJDK搭建开发环境?本专题介绍版本选择、下载安装、环境变量配置和编译运行验证,帮助你理清JDK的作用及基本配置流程,并通过简单程序检查环境是否可用,为后续项目开发做好准备。

20

2026.10.16

OpenJDK怎么部署Java应用
OpenJDK怎么部署Java应用

Java项目开发完成后,怎样部署到目标环境并正常运行?本专题介绍OpenJDK应用部署流程,涵盖运行环境准备、版本兼容检查、应用打包、启动参数配置和日志查看,帮助你理清部署前后的操作顺序,减少环境差异造成的运行问题。

0

2026.10.16

Revel框架模板渲染与表单验证
Revel框架模板渲染与表单验证

本专题围绕Revel框架视图层开发,介绍模板语法、变量输出、布局复用、表单提交、参数绑定与验证规则,帮助开发者完成安全规范的页面交互。

20

2026.10.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
ThinkPHP配置开发与CMS后台实战
ThinkPHP配置开发与CMS后台实战

共87课时 | 12.9万人学习

第二十三期_综合实战
第二十三期_综合实战

共89课时 | 11.1万人学习

Layui 快速入门精讲
Layui 快速入门精讲

共5课时 | 1.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn