| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- import { onMounted, onBeforeUnmount } from 'vue'
- export function useRowClickStyle(tableRef: any, rowClass: string = 'vxe-table-row-clicked-style') {
- const handleMouseDown = (event: any) => {
- const trElement = event.target.closest('tr')
- if (trElement && trElement.hasAttribute('rowid')) {
- const rowId = trElement.getAttribute('rowid')
- const allRows = document.querySelectorAll(`tr[rowid="${rowId}"]`)
- allRows.forEach((row) => {
- row.classList.add(rowClass)
- })
- const handleMouseUp = () => {
- allRows.forEach((row) => {
- row.classList.remove(rowClass)
- })
- // 移除 mouseup 事件监听器
- document.removeEventListener('mouseup', handleMouseUp)
- }
- // 监听 mouseup 事件,抬起鼠标时移除类名
- document.addEventListener('mouseup', handleMouseUp)
- }
- }
- onMounted(() => {
- const gridElement = tableRef.value?.$el
- if (gridElement) {
- // 为表格添加 mousedown 事件监听器
- gridElement.addEventListener('mousedown', handleMouseDown)
- }
- })
- onBeforeUnmount(() => {
- const gridElement = tableRef.value?.$el
- if (gridElement) {
- gridElement.removeEventListener('mousedown', handleMouseDown)
- }
- })
- }
|