Vue el-table实现右键菜单功能

Laura ·
更新时间:2024-11-10
· 1121 次阅读

本文实例为大家分享了Vue el-table实现右键菜单功能的具体代码,供大家参考,具体内容如下

实现的效果如下:

1.el-table和右键菜单视图代码

@row-contextmenu="rightClick"是右键点击事件

@row-click="clickTableRow"是每行单击事件

<el-table     border     :data="connectList"     @row-contextmenu="rightClick"     @row-click="clickTableRow" >   <el-table-column label="ID" align="center" width="180" prop="id"/>   <el-table-column label="目标" align="center" prop="url" :show-overflow-tooltip="true"/>   <el-table-column label="修改时间" align="center" width="180" sortable prop="updatatime"/>   <el-table-column label="盘符" align="center" width="60" prop="drive"/> </el-table> <!-- 右键菜单 --> <div id="menu" class="menuDiv">   <ul class="menuUl">     <li         v-for="(item, index) in menus"         :key="index"         @click.stop="infoClick(index)"     >       {{ item.name }}     </li>   </ul> </div>

2.js方法代码

data() {  return {     //右键菜单    menus: [      { name: '编辑webshell', operType: 1 },      { name: '删除webshell', operType: 2 },      { name: '虚拟终端', operType: 3 },      { name: '文件管理', operType: 4 }    ]  } // methods 部分: // table的右键点击当前行事件 rightClick(row, column, event) {   let menu = document.querySelector("#menu");   //阻止元素发生默认的行为   event.preventDefault();   // 根据事件对象中鼠标点击的位置,进行定位   menu.style.left = event.clientX + 10 + "px";   menu.style.top = event.clientY - 30 + "px";   // 改变自定义菜单的隐藏与显示   menu.style.display = "block";   menu.style.zIndex = 1000; },  // table的左键点击当前行事件 clickTableRow(row, column, event) {   let menu = document.querySelector("#menu");   menu.style.display = "none"; }, // 自定义菜单的点击事件 infoClick(index) {   if (index === 0) {   // do something   }   let menu = document.querySelector("#menu");   menu.style.display = "none"; },

3.css样式代码

.menuDiv {   display: none;   position: absolute;   .menuUl {     height: auto;     width: auto;     font-size: 14px;     text-align: left;     border-radius: 3px;     border: none;     background-color: #c4c4c4;     color: #fff;     list-style: none;     padding: 0 10px;     li {       width: 140px;       height: 35px;       line-height: 35px;       cursor: pointer;       border-bottom: 1px solid rgba(255, 255, 255, 0.47);       &:hover {         // background-color: rgb(26, 117, 158);         color: rgb(54, 138, 175);       }     }   } }



VUE 菜单 table

需要 登录 后方可回复, 如果你还没有账号请 注册新账号