最可靠方法是在done回调中用layui.$模拟点击首行并手动设置cache勾选状态。需确保table.on('row')提前注册、lay-filter唯一、data-index定位准确,且对静态data可直接设checked:true。
done回调里触发第一行click事件最可靠
直接在done里调click()常失效,因为dom还没真正挂载完成,layui的事件委托也未就绪。必须用layui.$(或全局$)模拟用户点击,才能激活table.on('row()')监听并同步视觉与逻辑状态。
- 确保
table.render()中配置了唯一lay-filter="xxx",且列中启用了type: 'checkbox'或监听了row事件 - 选择器必须用
.layui-table-view[lay-id="xxx"] .layui-table-body tr[data-index="0"]——data-index="0"是Layui内部索引,不是你数据里的id - 别用
document.querySelector().click(),它触发的是原生click,Layui不响应
示例:
done: function(res, curr, count) {
if (res.data.length > 0) {
layui.$('.layui-table-view[lay-id="userTable"] .layui-table-body tr[data-index="0"]').click();
}
}
要同时勾选checkbox就得手动设cache再刷新
只点第一行,checkbox不会自动打钩。Layui的勾选状态由table.cache驱动,DOM只是视图。必须改缓存+调table.checkStatus(),否则table.checkStatus('userTable')拿不到结果。
-
setTimeout(() => {}, 0)必不可少,确保table.cache已写入新数据 - 从
table.cache['userTable']取首项,设checked: true,不能操作input[type="checkbox"]的checked属性 - 调用
table.checkStatus('userTable')强制重绘勾选状态,这步漏掉就等于没做
示例:
done: function(res, curr, count) {
setTimeout(() => {
const cache = table.cache['userTable'];
if (cache && cache.length > 0) {
cache[0].checked = true;
table.checkStatus('userTable');
}
}, 0);
}
本地data初始化时直接加checked: true最省事
如果你的数据是前端静态定义的(非url异步加载),根本不用等done——在原始data数组里给第一项加checked: true字段,Layui渲染时会自动识别、打钩、并让checkStatus立刻返回它。
- 字段名必须小写
checked,写成Checked或isSelected无效 - 只对
data模式生效,url方式下服务端返回checked字段会被忽略 - 配合
page: false或单页数据最稳;跨页场景仍需done中恢复
示例:
table.render({
elem: '#userTable',
data: [
{ id: 1, name: '张三', checked: true },
{ id: 2, name: '李四' }
],
cols: [[{ type: 'checkbox' }]]
});
容易被忽略的细节:row事件监听必须提前注册
done里触发click能生效的前提,是table.on('row(filter)')已经在table.render()之后立即注册。如果监听写在done里,第一次点击会错过——因为行元素已经渲染完,但事件还没绑定。
- 监听必须写在
table.render()调用之后、且在任何done之前 - 别把
table.on('row()')和table.render()包在同一个异步回调里,顺序错就白配 - 如果表格启用了
autoSort,排序可能改变data-index顺序,此时靠索引找第一行会错位,得按业务字段匹配
正确顺序:
table.render({ /* ... */ });
<p>// ✅ 必须紧跟render之后
table.on('row(userTable)', function(obj) {
console.log('行被点击', obj.data);
});</p><p>// ❌ 错误:监听写在done里,第一次点击不触发</p>











