elementui表格自定义指令控制显示哪些列可以拖动

javascript 复制代码
Vue.directive('tableBorder', function (el, {value}) {
  // value允许传字符串数字和数组
  el.classList.add('z_table_hasBorder')
  
  let hasStyle = el.querySelector('style')
  if(hasStyle){
    hasStyle.remove()
  }

  let style = document.createElement('style')
  let str = `
    .z_table_hasBorder  .el-table__cell{
      border-width: 0px;
    }
  `

  let reg = /^[0-9]*$/
  if(typeof value === 'string' || typeof value === 'number'){
    let test = reg.test(value)
    value  = test ? [Number(value)] : []
  }else if(!Array.isArray(value)){
    value = []
  }

  let html =value.reduce((prev,item)=>{
    let test = reg.test(item)
    return prev += test ? `
      .z_table_hasBorder tr .el-table__cell:nth-of-type(${item}){
        border-width: 1px;
      }
    ` : ''
  },str)

  style.innerText = html

  el.appendChild(style)
})

用法

javascript 复制代码
<el-table
    :data="tableData"
    border
    v-tableBorder="[2,4]"
    style="width: 100%">
    <el-table-column
      prop="date"
      label="日期"
      width="180">
    </el-table-column>
    <el-table-column
      prop="name"
      label="姓名"
      width="180">
    </el-table-column>
    <el-table-column
      prop="name"
      label="姓名"
      width="180">
    </el-table-column>
    <el-table-column
      prop="name"
      label="姓名"
      width="180">
    </el-table-column>
    <el-table-column
      prop="name"
      label="姓名"
      width="180">
    </el-table-column>
    <el-table-column
      prop="address"
      label="地址">
    </el-table-column>

效果

相关推荐
沉登c几秒前
Javascript客户端时间与服务器时间
服务器·javascript
持久的棒棒君3 分钟前
ElementUI 2.x 输入框回车后在调用接口进行远程搜索功能
前端·javascript·elementui
2401_8572979114 分钟前
秋招内推2025-招联金融
java·前端·算法·金融·求职招聘
undefined&&懒洋洋1 小时前
Web和UE5像素流送、通信教程
前端·ue5
大前端爱好者3 小时前
React 19 新特性详解
前端
小程xy3 小时前
react 知识点汇总(非常全面)
前端·javascript·react.js
随云6323 小时前
WebGL编程指南之着色器语言GLSL ES(入门GLSL ES这篇就够了)
前端·webgl
随云6323 小时前
WebGL编程指南之进入三维世界
前端·webgl
寻找09之夏4 小时前
【Vue3实战】:用导航守卫拦截未保存的编辑,提升用户体验
前端·vue.js
非著名架构师4 小时前
js混淆的方式方法
开发语言·javascript·ecmascript