日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > vue >内容正文

vue

在Vue组件中获取全局的点击事件

發布時間:2025/4/16 vue 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在Vue组件中获取全局的点击事件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
使用場景:

在Vue組件中點擊某元素之外的地方移除該元素


需求:

如上圖所示,“用戶列表”頁面有三個Vue組件組成,分別是“菜單組件”,“導航組件”和“列表組件”。其中“列表組件”中包含一個“下拉菜單”,當我們點擊“下拉菜單”以外的區域隱藏下拉菜單。


解決方法一:

出現“下拉菜單”的同時,建一個透明的遮罩層,然后只有“下拉菜單”可以點,點擊遮罩層就隱藏。

缺點:z-index層數要控制好,還有就是如果點擊其他功能按鈕,會失效,因為有遮罩層,導致要點擊兩次才有效。


解決方法二:

局部監聽,給“列表組件”最外層的盒子加個點擊事件,隱藏下拉菜單。并且對“下拉菜單”的事件要阻止事件冒泡。

缺點:點擊“列表組件”區域有效,點擊“菜單組件”和“導航組件”區域無效。


解決方法三(推薦):

第一步:定義Vue全局點擊函數

// 定義全局點擊函數 Vue.prototype.globalClick = function (callback) {document.getElementById('main').onclick = function () {callback();}; };

tips:
1、參數為點擊的回調函數。
2、Vue中通過getElementsByTagName獲取不到body節點,還不知道是什么原因。

第二步:在組件中監聽全局的點擊事件

mounted: function () {this.globalClick(this.moreSetupMenuRemove); }

tips:mounted是Vue生命周期鉤子中的DOM渲染完成階段。

第三步:進行操作

// 移除操作 moreSetupMenuRemove () {this.$refs.moreSetupMenu.style.display = 'none'; },

如果有更好的方法,歡迎交流!

總結

以上是生活随笔為你收集整理的在Vue组件中获取全局的点击事件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。