- 在vue的mounted中写,在vue中,jq的this并没有指向当前的data,需const _this = this 改变this指向
const _this = this
$(document).click(function(e) {
console.log('e', e)
if (_this.debug === 0) { // 如果当前是显示的,则将标志位设置为1
console.log('0')
_this.debug = 1
return
}
if (_this.debug === 1) { // 当目前为隐藏时或者已经在展示状态时判断
// console.log('1')
// console.log('1', (e.target).parents('.content'))
// console.log('133', e.target)
if ($(e.target).parents('.content').length === 0) { // 如果未点击对应位置则隐藏
// _this.is_select_show = false
}
}
})
2,在“点击”按钮出现的div的事件中
openAddress() {
this.is_select_show = !this.is_select_show
if (this.is_select_show) {
this.debug = 0 // 保存当前为展示的状态
} else {
this.debug = 1
}
},
二:第二种方法
我是表单里面有个按钮带点击显示,影藏,‘
点击openAddress显示panelShow节点的内容,id很重要“el-form-item id=“myPanel””
<el-form-item id="myPanel" label="地址信息:" prop="area_id">
<el-button
class="address"
style="color:#c0c4cc; white-space:normal; max-width:600px;width:350px;min-height:40px;"
@click="openAddress()" >
<div style="text-align:left;">
<span style="color:black">{{ areas_name }}</span>
<span v-if="!areas_name" style="color:#dcdfe6">请选择省/市/区/街道</span>
<i class="el-icon-arrow-down adress_i" />
</div>
</el-button>
<div v-if="panelShow" style="width:360px">
<addressSelect
:isempty="isempty"
:address-select-show="is_select_show"
:left-value="-75"
:top-value="41"
@getAddressDetail="getAddressDetail"/>
</div>
</el-form-item>
2,在外需要点击影藏的地方添加点击事件
<div ref="allBrand" class="mains" @click="hidePanel" ></div>
hidePanel(event) {
var myPanel = document.getElementById('myPanel')// 得到点击出现的节点
if (myPanel) {
this.panelShow = true// 有改节点的时候,显示,解决第二次点击openAddress按钮出现的bug
if (!(myPanel.contains(event.target))) { // 这句是说如果我们点击到了id为myPanel以外的区域,为false
this.panelShow = false// 消失
}
}
},