vue操作dom并為dom增加點(diǎn)擊事件方式
本文實(shí)現(xiàn)的效果是利用js 在element圖片放大后新增加一個下載的按鈕 效果如下
實(shí)現(xiàn)效果
環(huán)境
項(xiàng)目中采用 vue
+ element
的方式
圖片放大預(yù)覽主要借助 element里面內(nèi)部的一個未公開組件
有興趣的小伙伴可以自行查看源碼
分析過程
打開控制臺后 發(fā)現(xiàn)這里實(shí)際 是在一個名字為el-image-viewer__actions__inner
的 class
下追加一個 i
元素的標(biāo)簽 ,icon 使用element自帶的圖標(biāo)即可
分析可以得知,我們只需要在 class el-image-viewer__actions__inner
后追加元素即可
vue由于是虛擬dom 追加元素必須要等待 dom的渲染完成
也就是必須要在 mounted 鉤子完成
但是這個時候 我們不能使用vue的 @click 來綁定事件
到 mounted 這個步驟的時候 vue 已經(jīng)進(jìn)行過模板的編譯 添加@click 就無法識別
所以這里需要用到原生的方法來添加dom
代碼實(shí)現(xiàn)
// 需要在頁面渲染完后 this.$nextTick(() => { // 獲取對應(yīng)的 dom元素 var otest = document.querySelector("div.el-image-viewer__actions__inner"); // 創(chuàng)建一個新dom,并設(shè)置icon,綁定點(diǎn)擊事件 var newEle = document.createElement("i"); newEle.className = "el-icon-download"; newEle.onclick = () => { window.open( this.srcList[0] + "?response-content-type=application/octet-stream" ); }; // 在對應(yīng)dom 下追加創(chuàng)建的dom otest.appendChild(newEle); });
到此為止 即可實(shí)現(xiàn)
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
VUE學(xué)習(xí)寶典之vue-dialog使用方法
在Vue中dialog對話框是一種常見的組件,用于在用戶與應(yīng)用程序進(jìn)行交互時顯示信息或收集輸入,這篇文章主要給大家介紹了關(guān)于VUE學(xué)習(xí)寶典之vue-dialog使用方法的相關(guān)資料,需要的朋友可以參考下2024-05-05vue element自定義表單驗(yàn)證請求后端接口驗(yàn)證
這篇文章主要介紹了vue element自定義表單驗(yàn)證請求后端接口驗(yàn)證,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12Nginx部署Vue.js前端項(xiàng)目的實(shí)現(xiàn)
本文主要介紹了Nginx部署Vue.js前端項(xiàng)目指南,幫助您實(shí)現(xiàn)從開發(fā)到線上部署的平滑過渡,確保用戶能夠獲得最佳的訪問體驗(yàn),感興趣的可以了解一下2024-09-09vue移動端項(xiàng)目中如何實(shí)現(xiàn)頁面緩存的示例代碼
這篇文章主要介紹了vue移動端項(xiàng)目中如何實(shí)現(xiàn)頁面緩存的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03