删除 type: 'checkbox' 列可彻底隐藏 layui 表格默认全选复选框;若需保留行内单选 checkbox,唯一可靠方案是改用 templet 自定义渲染并手动维护选中状态。

隐藏 layui 表格默认全选复选框(首列表头 checkbox)
直接删掉 type: 'checkbox' 列,就没了。layui 的全选按钮只存在于配置了 {type: 'checkbox'} 的首列中,它不是独立 DOM 元素,无法单独隐藏;删掉这列,表头和所有行的 checkbox 都消失。
保留单行复选框但隐藏表头全选按钮
做不到。只要用了 type: 'checkbox',layui 就一定会在表头渲染一个全选 checkbox,且没有配置项可关掉。强行用 CSS 隐藏(如 th[data-type="checkbox"] { display: none; })会导致:点击该列任意行 checkbox 时,表头 checkbox 状态错乱、table.checkStatus() 返回异常、翻页后状态丢失。
想只保留行内 checkbox,又不要表头全选?改用 templet 模拟
这是唯一可靠方案:放弃 type: 'checkbox',改用普通列 + templet 手动渲染每行的 checkbox,并完全绕过 layui 的内置全选逻辑。
- 列定义写成:
{field: 'select', title: '选择', width: 60, templet: '#selectTpl'} - 模板里按需输出:
<script type="text/html" id="selectTpl">{{# if(d.status !== 'archived') { }}<input type="checkbox" name="rowSelect" value="{{d.id}}" lay-skin="primary">{{# } }}</script> - 注意:
name值不能是layTableCheckbox,否则仍会被 layui 当作内置控件干扰 -
table.checkStatus()对这种 checkbox 完全无效,需自行维护selectedIds = new Set()并监听form.on('checkbox(rowSelect)')
为什么不能用 CSS 或 JS 动态 hide 表头 checkbox
因为 layui 在每次重绘(翻页、搜索、reload)时都会重建表头 DOM,你加的 style="display:none" 或 .hide() 会在下一次渲染后失效;而直接移除元素会破坏内部事件绑定链,导致 form.render('checkbox') 报错或静默失败。更麻烦的是,表头 checkbox 的勾选状态由 layui 内部变量控制,外部操作无法同步该变量,后续调用 checkStatus 极大概率返回空数组或错误数据。











