方法一:? ?contains方法??用于判断DOM元素的包含关系;
需要注意的是:它以HTMLElement为参数,且返回布尔值。
document.addEventListener('click', (el) => { console.log(this.$refs.content.contains(el.target)); })
<template>
<button @click.stop='showBox'>点击展示隐藏盒子</button>
<div ref='box' v-show="flag">要隐藏的盒子</div>
</template>
<script>
export default {
data(){
return{
flag:false
}
},
mounted() {
document.addEventListener('click', this.hideBox);
},
methods:{
hideBox(e){
//判断是否点击的是盒子之外
if (!this.$refs.box.contains(e.target)) {
this.flag = false
}
},
showBox(){
this.flag = !this.flag
},
}
}
</script>
方法二: 可以给盒子加上阻止冒泡? ? ?.stop