<div class="click" @click="handleClose">click</div>
<div ref="box" class="list" v-show="isOpen">
<div>5554455</div>
<div>55555</div>
</div>
<script>
export default {
data() {
return {
isOpen: false,
};
},
mounted() {
document.addEventListener("click", this.hideBox);
},
methods: {
hideBox(e) {
// 判断是否点击需隐藏的 div 及其内部元素
if (!this.$refs.box.contains(e.target)) {
this.isOpen = false;
}
},
handleClose() {
setTimeout(() => {
this.isOpen = !this.isOpen;
});
},
},
beforeDestroy() {
document.removeEventListener("click", this.hideBox);
},
watch: {
isOpen: function (oldV, newV) {
document.addEventListener("click", this.hideBox);
},
},
};
</script>
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。