Element- UI 點擊按鈕實現樹形數據table全部展開和摺疊

2020-12-25 前端嘮嘮嗑

本文中element-ui版本為 2.13.0

Element- UI中樹形數據table有一個屬性default-expand-all是控制樹形數據的展開和摺疊的,但是我們如果使用按鈕動態更改該屬性是沒有效果的,因為其只在table第一次初始化的時候有效。

<!-- vue頁面中table表頭設置--><el-table v-loading="listLoading" :data="list" element-loading-text="拼命加載中..." border style="width: 100%;margin-bottom: 20px;" row-key="id" highlight-current-row :show-header="showHeader" lazy :load="load" :tree-props="{children: 'children', hasChildren: 'hasChildren'}" >

已展開項icon

未展開項icon

通過觀察頁面我們發現Element- UI中的table是通過點擊div.el-table__expand-icon元素來控制展開摺疊,展開狀態時該元素會新增一個classel-table__expand-icon--expanded。由此我們可以理一下解決思路:

一 . 點擊全部展開

獲取所有沒有class el-table__expand-icon--expanded的div.el-table__expand-icon元素,給第1步獲取到的元素添加點擊事件/*全部展開按鈕點擊方法*/ToExpandAll() { const els = document.getElementsByClassName('el-table__expand-icon') if (this.list.length !== 0 && els.length !== 0) { // 給所有的展開icon添加標記 for (let j1 = 0; j1 < els.length; j1++) { els[j1].classList.add('clickItem') } if (this.$el.getElementsByClassName('el-table__expand-icon--expanded')) { const open = this.$el.getElementsByClassName('el-table__expand-icon--expanded') // 去掉已經展開icon的標記 for (let j = 0; j < open.length; j++) { open[j].classList.remove('clickItem') } const clickItem = this.$el.getElementsByClassName('clickItem') // 給所有未展開icon添加點擊事件 for (let a = 0; a < clickItem.length; a++) { clickItem[a].click() } } } }二 . 點擊全部摺疊

獲取所有class el-table__expand-icon--expanded的div.el-table__expand-icon元素,給第1步獲取到的元素添加點擊事件/*全部摺疊按鈕點擊方法*/ToClose() { if (this.list.length !== 0) { const elsopen = this.$el.getElementsByClassName('el-table__expand-icon--expanded') if (this.$el.getElementsByClassName('el-table__expand-icon--expanded')) { // 給所有已經展開icon添加點擊事件 for (let i = 0; i < elsopen.length; i++) { elsopen[i].click() } } } }擴展

點擊全部展開時,我們也可以移除div.el-table__expand-icon元素中的class el-table__expand-icon--expanded, 然後給所有div.el-table__expand-icon元素添加點擊事件。

相關焦點

  • 如何在Element實現表格的增加、修改和刪除
    展示數據,還可以對表格記錄進行新增、修改和刪除。下面利用具體的實例說明:操作步驟如下:1、打開HBuilderX開發工具,創建vue+element框架項目,然後新建vue文件,輸入名稱Person.vue,點擊創建按鈕
  • vue-element-admin v3.9.0 發布,後臺集成方案
    vue-element-admin v3.9.0 已發布,更新內容:refactor[tagsView]: 使用 el-scrollbar 替代之前的滾動方案 #995
  • nuxt打包element-ui上傳阿里雲oss(CDN)上字體出現跨域問題
    今天打包將項目放到linux伺服器上,打包項目,將打包文件放到阿里雲oss(CDN),訪問界面時,出現element字體跨域問題。截圖如下:苦逼一下午,終於解決了這個問題。1.先要理解vue和nuxt的assets文件夾和static文件夾的區別,asset是會被webpack打包,你只有將字體文件放到static就會當成靜態文件直接訪問,不會處理。
  • Vue 3下element-ui用不了怎麼辦,element-plus來幫你
    element-plus你可以理解為是element-ui支持Vue 3的版本,element-plus是一套支持Vue 3.0的組件庫,提供的組件涵蓋了絕大部分頁面UI的需求。在Vue 3的腳手架項目中,首先安裝element-plus的npm包,命令如下所示:npm install element-plus -S編輯main.js,引入整個element-plus組件和所需的樣式,由於element-plus組件內部默認使用英語,而我們項目需要使用中文
  • Element - 餓了麼團隊出品的神級桌面 UI 組件庫
    設計師可以下載設計文件,在做設計圖時直接使用模板,既能快速出圖,也保證了前端還原實現。我是一個喜歡研究前端開發的愛好者,當我第一次看到element時,臥槽真漂亮!那個時候優秀的前端ui框架還不多,等我把官網所有的組件一一體驗下來,發現驚嘆得太早了,不僅好看,體驗做得非常到位,另我深有體會的是,原來在做產品設計時很難解決的交互問題,element都解決得非常好。高質量的UI組件為了用它,於是花了1周時間學了vue.js,之後就開始策馬奔騰了。
  • 如何創建vue項目並使用element框架中的el-select
    預覽效果7、按Ctrl + C快捷鍵停止項目,執行命令npm i element-ui -S安裝ElementUI命令:npm i element-ui -Snpm i element-ui -S8、打開項目中的main.js文件,依次導入element-ui和對應的樣式文件,調用Vue.use(ElementUI)
  • 如何在Element中實現表格雙擊查看詳情
    (表格)組件,如果表格欄位是編號,顯示的是描述,或雙擊表格行記錄,查看這條記錄的詳情,該如何實現呢?下面利用實例說明:實現功能:欄位數據為編號(數值),界面上要顯示文字內容雙擊表格行記錄,彈出一個詳情窗口,可以查看步驟如下:1
  • Excel中如何實現按日期篩選數據
    有小夥伴用Excel統計數據,可是在設置按日期篩選時,沒辦法實現按年、月、日維度篩選。問題出在哪了?原來,表中他錄入日期數據時,並不是用的Excel標準的日期格式,而是隨手自己寫的。Excel中日期格式默認的標準是用「-」、「/」或者直接中文「年月日」來分隔的。
  • vue-element-admin v3.6.1 發布,後臺集成方案
    vue-element-admin v3.6.1 已發布,更新內容:vue-element-admin 是基於 vue+element 的後臺集成方案,功能包括:登錄
  • 如何在Element框架使用日期控制項並獲取年齡
    JavaScriptCSS3在element框架項目中,日期控制項是一種常用的,可以顯示日期、時間和日期時間。data對象定義並初始化表單對象變量4、在日期控制項el-date-picker,添加change事件,插入屬性format和value-format
  • 如何用純css打造類materialUI的按鈕點擊動畫並封裝成react組件
    , ant-design-vue, iView等成熟的UI框架, react生態的ant-design, materialUI等,這些第三方UI框架極大的降低了我們開發一個項目的成本和複雜度,使開發者更專注於實現業務邏輯和服務化.
  • excel實用技巧:對數據進行分組,讓數據摺疊自如
    工作或生活中有沒有遇到非常多的數據,滑鼠滾動半天都看不到底?現在我們可以通過給數據分組的方法來讓數據看起來更方便,接下來就一起學習下如何給數據分組吧。我們以下面這個圖表為例,來為大家演示下如何分組第一步:選中需要摺疊分組的數據,點擊菜單欄中的【數據】找到【創建組】第二步:在跳出的彈窗中根據實際的表格樣式選擇「行」或 「列」進行摺疊(圖中我們是對行進行分列,所以我們選擇「行」)第三步:選中「行」或「列」之後點擊【確定】我們就分組完成了。
  • vue實現複雜表格上移下移功能
    由於當前表格較為複雜,其中包含較多合併單元格,所以拖拽不大好處理,於是使用簡單的上移下移按鈕來替代。表格採用的是element-ui的el-table實現的。用於展示的數據是一個數組,經過合併單元格的方法處理,展現效果為上圖所示。而上移、下移是基於整體項目的上移下移。
  • 從零做網站開發:基於Flask和JQuery實現表格管理平臺
    基於Flask框架和JQuery實現管理平臺網站的開發功能,我代碼編寫用了2天的時間 ,從零開始寫;又對具體實現流程,自己斷斷續續地整理總結了近半個月。從自我感覺來說,整個過程和結果的實現都讓我很滿意。
  • 教你實現一個簡單實用的計時器
    >4.實現設置時間功能5.實現開始計時功能1.設計UI界面 timer.ui根據功能,我們需要一個顯示時間的部件,這裡採用的是LCD Number顯示部件,兩個功能按鈕選用的都是pushButton部件,完成好保存到桌面上。
  • 英語at table 和 at the table 的區別
    英語中,at table 和 at the table 是兩個十分相似的詞組,但是它們的意思並不相同,今天我們一起來學習一下這兩個詞組的用法。1. at table:這個詞組的意思是「用餐;吃飯」。例句1:Children must learn to behave at table.小孩必須學會吃飯時的規矩。例句2:I found them at table this morning.今天早上我發現他們正在進餐。