Layui表格单元格默认不支持双击选中文字,因td为不可编辑纯展示内容;意外选中通常由contenteditable="true"、tabindex或user-select: text等无意激活焦点/编辑态导致,需检查并移除相关属性或样式。

layui 表格单元格默认不支持双击选中文字,但如果你发现双击时文字被意外选中(比如出现蓝色高亮),那通常是因为浏览器对可聚焦/可编辑内容的默认行为被意外激活了——不是 layui 主动加的,而是你或 CSS 无意中触发了它。
为什么双击会选中文字
根本原因是:某个 这是最常见也最隐蔽的诱因。哪怕只是某列用了 单纯加 如果你监听了 真正容易被忽略的是:禁用选中不是靠“关掉某个开关”,而是持续维护单元格的“不可编辑、不可聚焦、不可选中”三重状态。只要其中一环松动(比如某次 reload 后忘了清掉 或其子元素被设了 contenteditable="true"、tabindex、或 CSS 中启用了 user-select: text 且该元素恰好能获得焦点。Layui 渲染的单元格默认是纯 检查并移除 contenteditable 属性
templet 并手写了 及其子 contenteditable 属性
contenteditable(如自定义编辑),必须在双击时阻止默认行为:event.preventDefault(),且不要依赖 user-select 控制选中contenteditable="" 或 contenteditable="false" —— 后者在部分浏览器中仍会被当作 true 解析禁用 user-select 但保留可点击性
user-select: none 会同时禁掉所有文本选择(包括用户想复制时),更稳妥的做法是只对非输入场景禁用:
.layui-table td { -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; }
.layui-table .note-col { user-select: text; }
拦截 rowDouble 事件避免误触发
rowDouble 但没做任何事,用户双击时浏览器可能把焦点落到某个文本节点上,进而触发选中。即使没逻辑,也要显式终止事件传播:
table.on('rowDouble(filter)', function(obj){ ... }) 回调里第一行加 layui.stope(event)
return false —— 它只阻止回调执行,不阻止浏览器默认行为templet 渲染按钮等交互元素,确保它们的 lay-event 不会冒泡到 上(加 layui.stope(event) 在 tool 回调开头)
contenteditable,或新模板漏了 lay-unselect),双击选中就会重现。











