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

2021-01-11 前端嘮嘮嗑

本文中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-ui表格,我是這樣做的
    表格需求一般管理系統對表格會有以下需求可以分頁(需要有分頁條)可以多選(表格帶複選框)頂部需要加一些操作按鈕(新增,刪除等等)表格每行行尾有操作按鈕表格行可以編輯如下圖為一個示例表格如果我們直接使用element-ui提供的組件的話,那麼開發一個這樣的表格就需要使用到以下內容需要使用表格的插槽功能,開發每一行的按鈕需要通過樣式調整頂部按鈕
  • Laravel + Element 超簡單實現分頁效果案例教程
    在Web應用開發中,前端常常要展示數據列表,數據較多時就要對查詢結果進行分頁,只顯示當前頁的數據,一方面不會造成數據列表過長,另一方面減少每次查詢和返回的數據量。Laravel 中實現數據分頁非常簡單,使用 Element-UI 完成分頁數據的前端展示同樣非常簡單。一、Laravel 分頁1、在其他框架中,分頁操作可能比較複雜。
  • 如何在Element實現表格的增加、修改和刪除
    工具HBuilderXnpm瀏覽器Node.js技術VueElementJavaScriptCSS3在使用Element框架時,可以使用el-table展示數據,還可以對表格記錄進行新增、修改和刪除。下面利用具體的實例說明:操作步驟如下:1、打開HBuilderX開發工具,創建vue+element框架項目,然後新建vue文件,輸入名稱Person.vue,點擊創建按鈕
  • elementui中Collapse摺疊面板的全部展開
    代碼示例圖1、圖片中標識的 1 是 v-model 要執行的函數方法,1 裡面的this.chapterList 欄位是從父級頁面傳入的數據。2、圖片中標識的 2 是 elementui 中Collapse摺疊面板提到的唯一標示。3、通過圖片中標示 1 的方法調用,將 i.chapter_title return 上去,與圖片中的標識 2 進行對比展示。
  • 開源組件分享-Avue基於elementUI CRUD最強封裝
    Avue.js是基於element-ui庫進行的二次封裝,從而簡化一些繁瑣的操作,核心理念為數據驅動視圖,主要的組件庫針對table表格和form表單場景,同時衍生出更多企業常用的組件,達到高復用,容易維護和擴展的框架,同時內置了豐富了數據展示組件,讓開發變得更加容易。
  • Element-ui簡單使用方法
    Element-ui,是一套為開發者、設計師和產品經理準備的基於Vue 2.0的由餓了麼公司出品的桌面端組件庫。下載安裝npm install vue #安裝Vuenpm i element-ui -S #安裝Element-ui圖標,el內置了許多圖標,使用icon="iconname"
  • vue-element-admin 4.0.0 正式版發布
    啟用了 模塊化 namespaced 新增了 settings.js,讓 sidebarLogo、fixedHeader、TagsViews 等都可配置 新增了 sidebar logo 重構了側邊欄 sidebar 代碼邏輯,並且優化了樣式和展開收起動畫
  • 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組件內部默認使用英語,而我們項目需要使用中文
  • 實現:超過N行摺疊並顯示「……查看全部」「功能」
    本文轉載自【微信公眾號:前端人,ID:FrontendPeople】經微信公眾號授權轉載,如需轉載與原文作者聯繫多行文本超過指定行數隱藏超出部分並顯示「...查看全部」是一個常遇到的需求,網上也有人實現過類似的功能,不過還是想自己寫寫看,於是就寫了一個Vue
  • 如何創建vue項目並使用element框架中的el-select
    打開瀏覽器,在地址欄輸入預覽效果7、按Ctrl + C快捷鍵停止項目,執行命令npm i element-ui-S安裝ElementUI命令:npm i element-ui -S>npm i element-ui -S8、打開項目中的main.js文件,依次導入element-ui和對應的樣式文件,調用Vue.use(ElementUI)
  • 亦明圖記:SolidWorks繪製風車,鈑金特徵的展開與摺疊應用
    繪製;繪製過程:1、在前視基準面上繪製草圖;2、選擇所有圓弧直線,測量出總長度173.51;3、選擇鈑金>基體法蘭命令:反向,給定深度173.51(上一步測量出的長度);鈑金厚度0.2;4、選擇展開命令
  • 如何用純css打造類materialUI的按鈕點擊動畫並封裝成react組件
    , react生態的ant-design, materialUI等,這些第三方UI框架極大的降低了我們開發一個項目的成本和複雜度,使開發者更專注於實現業務邏輯和服務化.但隨著對用戶體驗的越來越重視,對交互體驗要求的提高以及css3等新標準的出現,使得web更加大放異彩, 各種動效的實現都變得非常容易.筆者在研究materialUI框架時對於它的交互及其讚嘆.所以為了自己能實現一個類似materialUI的按鈕點擊動畫,並封裝到自己的UI庫中,筆者特地總結了一些思路,希望可以和廣大的前端工程師們一起探討.
  • ElementUI 不維護了?供我們選擇的 Vue 組件庫還有很多!
    這裡放幾個知乎連結:element-ui 是不是不維護了如果 ElementUI 不維護了,也不再支持 Vue 3了我們該怎麼辦呢?仔細翻閱上述知乎回答,有些比較閒的作者已經 fork 了 ElementUI 的源碼,自己改造適配 Vue3,在此我只能說兩個字:敬佩。
  • 如何在Vue3框架中使用Element Plus
    安裝element-plus8、打開main.js文件,導入element-plus的組件新建vue文件ButtonData.vue10、打開vue文件,插入一個el-button,並綁定點擊事件;定義點擊事件
  • Semantic UI 1.0 發布,前端 UI 框架 - OSCHINA - 中文開源技術...
    Styled accordions are now included as a variationui styled accordionList - List item selectors are now more strict, list items must be immediate children ofui listorui list list
  • 餓了麼公司前端團隊開源前端基於 Vue的桌面端組件庫-Element
    開源版本持續更新至2.3.2版;設計原則一致性 Consistency與現實生活一致:與現實生活的流程、邏輯保持一致,遵循用戶習慣的語言和概念;在界面中一致:所有的元素和結構需保持一致,比如:設計樣式、圖標和文本、元素的位置等。
  • 如何將Element Plus無序列表項轉換樹節點
    ,可以展開或收縮,樣式跟樹控制項一致。插入一個無序列表和三個Tree控制項4、在script標籤中,data對象中,初始化樹控制項數據源和屬性,定義樹形控制項事件將樹形控制項的lazy屬性去掉9、刷新瀏覽器,樹形數據展示出來
  • 從零做網站開發:基於Flask和JQuery實現表格管理平臺
    基於Flask框架和JQuery實現管理平臺網站的開發功能,我代碼編寫用了2天的時間 ,從零開始寫;又對具體實現流程,自己斷斷續續地整理總結了近半個月。從自我感覺來說,整個過程和結果的實現都讓我很滿意。
  • Elementor教程-初識elementor-神奇的WordPress頁面生成器
    今天和大家分享一個比較好的Wordpress插件:Elementor這是一款可以通過拖拽、點擊就可以完成wordpress站點設計的插件,同類似的插件也很多,比如Divi,Visual Composer,WPBeaverbuilder,Fusion