javascript - 在没有包的vue中单击某些元素之外
问题描述
我想知道我们如何从 vue 中的这些元素中隐藏所有点击时显示的元素:
<button @click="div1=true">Show div 1</button>
<div v-if="div1">DIV 1</div>
<button @click="div2=true">Show div 2</button>
<div v-if="div2">DIV 2</div>
如果单击 div 1 或在单击页面的某个随机部分时隐藏所有 div,如何隐藏除 div 1 之外的所有 div?vuetify 是如何处理的?
解决方案
Vue的方式是使用this.$el
(当前组件的DOM元素),你可以改变this.$el
和使用任何其他的HTMLElement
<div class="modal" @click="handleClick">
<div class="modal-dialog">
<div class="modal-content">
...
</div>
</div>
方法应该是这样的
handleClick(e: Event): void {
if (e.target instanceof HTMLElement && !this.$el.contains(e.target)) {
this.$emit("hide"); //fires only on click outside
}
}
推荐阅读
- clojure - 如何将 clojure 的 #inst 文字转换为等效的 java.time 类型?
- javafx - 显示 ArrayList 的值
- > 在 TableView (JavaFX) 中
- swift - 无法查看并使其工作 - 斯威夫特
- c++ - C++ 模板函数在 Visual Studio 2019 中不起作用 [错误 2668]
- opencv - 有没有办法使用 OCR 从 CAD 技术图纸中提取特定数据?
- node.js - 如何在 Mongo 查询中传递变量
- postgresql - Fabric-ca-server 重启后无法初始化 postgres 数据库
- python - 如何在 Python 中正确安装 MySQL 模块
- linux - 如何将结果写入空变量?
- java - Maven 构建失败:包不存在