22 lines
656 B
JavaScript
22 lines
656 B
JavaScript
const clickOutsideRow = {
|
|
mounted(el, binding) {
|
|
const rowSelector = binding.arg || '.expend_div' // 允许自定义行选择器
|
|
const handler = (e) => {
|
|
// 判断点击的是否为行元素且在表格容器内
|
|
const rowEl = e.target.closest(rowSelector)
|
|
const isInside = rowEl && el.contains(rowEl)
|
|
if (!isInside) {
|
|
binding.value(e) // 触发回调
|
|
}
|
|
}
|
|
|
|
el._clickOutsideHandler = handler
|
|
document.addEventListener('click', handler)
|
|
},
|
|
unmounted(el) {
|
|
document.removeEventListener('click', el._clickOutsideHandler)
|
|
delete el._clickOutsideHandler
|
|
}
|
|
}
|
|
|
|
export default clickOutsideRow |