vue如何實(shí)現(xiàn)點(diǎn)擊空白區(qū)域關(guān)閉彈窗
vue實(shí)現(xiàn)點(diǎn)擊空白區(qū)域關(guān)閉彈窗
效果展示

通過contains判斷點(diǎn)擊區(qū)域是否包含彈框
<template>
<div ref="list">
<span @click="is_list_show=!is_list_show">點(diǎn)擊</span>
<ul class="head-list-select" v-if="is_list_show">
<li>菜單1</li>
<li>菜單2</li>
<li>菜單3</li>
<li>菜單4</li>
<li>菜單5</li>
</ul>
</div>
</template>點(diǎn)擊頁面判斷
mounted(){
document.addEventListener("click", this.bodyCloseMenus)
},
beforeDestroy() { // 在頁面注銷前,刪除點(diǎn)擊事件
document.removeEventListener("click", this.bodyCloseMenus);
},
methods: {
bodyCloseMenus(e){
let btnstatus = this.$refs['list'];
if(btnstatus &&!btnstatus.contains(e.target)){
this.is_list_show = false;
}
}
},剛開始寫的時候只想到這種方法,后來百度了一下還有一種通過阻止冒泡@click.stop來實(shí)現(xiàn),嘗試了一下可以實(shí)現(xiàn),順便就記錄一下~
<template>
<div ref="list" @click.stop>
<span @click="is_list_show=!is_list_show">點(diǎn)擊</span>
<ul class="head-list-select" v-if="is_list_show">
<li>菜單1</li>
<li>菜單2</li>
<li>菜單3</li>
<li>菜單4</li>
<li>菜單5</li>
</ul>
</div>
</template>mounted(){
document.addEventListener("click", this.bodyCloseMenus)
},
beforeDestroy() {
document.removeEventListener("click", this.bodyCloseMenus);
},
methods: {
bodyCloseMenus(e){
let self = this;
if (self.is_list_show == true){
self.is_list_show = false;
}
}
},總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue3中使用v-model實(shí)現(xiàn)父子組件數(shù)據(jù)同步的三種方案
這篇文章主要介紹了vue3中使用v-model實(shí)現(xiàn)父子組件數(shù)據(jù)同步的三種方案,如果只有一個匿名v-model的傳遞的話,可以使用vue3.3新添加的編譯宏,defineModel來使用,每種方案結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-10-10
vue3新擬態(tài)組件庫開發(fā)流程之table組件源碼分析
這篇文章主要介紹了vue3新擬態(tài)組件庫開發(fā)流程——table組件源碼,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04
axios無法加載響應(yīng)數(shù)據(jù):no?data?found?for?resource?with?given?i
最近在在做一個小查詢功能的時候踩了一個坑,所以這篇文章主要給大家介紹了關(guān)于axios無法加載響應(yīng)數(shù)據(jù):no?data?found?for?resource?with?given?identifier報錯的解決方法,需要的朋友可以參考下2022-11-11
uniapp使用scroll-view下拉刷新無法取消的坑及解決
這篇文章主要介紹了uniapp使用scroll-view下拉刷新無法取消的坑及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05
vue使用Echarts設(shè)置數(shù)據(jù)無效問題記錄及解決方法
這篇文章主要介紹了vue使用Echarts設(shè)置數(shù)據(jù)無效問題記錄,本文通過場景分析給大家分享解決方法,需要的朋友可以參考下2022-08-08

