给el-drawer的容器元素绑定一个click事件监听器后点击触发了两次
时间: 2024-01-15 16:04:38 浏览: 167
这种情况通常是因为click事件在容器元素和子元素之间进行了冒泡,导致事件被触发了多次。你可以尝试使用事件委托来解决这个问题,即将事件监听器绑定到容器元素的父元素上,然后在事件处理函数中判断事件的目标元素是否是el-drawer的容器元素,如果是则执行相应的操作,如果不是则忽略该事件。代码示例:
```javascript
// 假设容器元素的id为container
const container = document.getElementById('container');
container.addEventListener('click', function(e) {
if (e.target.closest('.el-drawer__wrapper')) {
// 执行相应操作
}
});
```
这里使用了`closest`方法来判断事件的目标元素是否是el-drawer的容器元素或其子元素。如果是,则执行相应的操作;如果不是,则忽略该事件。
相关问题
给el-drawer的容器元素绑定一个click事件监听器
可以使用以下代码给el-drawer的容器元素绑定一个click事件监听器:
```javascript
const drawerContainer = document.querySelector('.el-drawer__container'); // 获取el-drawer容器元素
drawerContainer.addEventListener('click', (event) => {
// 在这里处理点击事件
});
```
在上述代码中,`drawerContainer`表示获取到的el-drawer容器元素,`addEventListener`方法用于给元素绑定事件监听器,第一个参数为事件类型,这里为`click`,第二个参数为事件处理函数,即当该事件被触发时执行的代码。你可以在这个事件处理函数中编写判断点击空白区域的代码,然后执行相应的操作。
用el-tree控制多个el-drawer的显示隐藏,并且点击下一个el-tree把上一个el-drawer隐藏
这个问题可以通过以下的方式来解决:
1. 给每个 el-tree 添加一个 click 事件, 在事件处理程序中,获取当前点击的元素的索引值。
2. 利用索引值,在 el-tree 内部使用 v-for 循环来遍历每个 el-drawer。使用 v-if 指令将当前索引与 el-drawer 的索引进行比较,如果相同则显示,否则隐藏。
3. 在点击下一个 el-tree 元素时,先隐藏当前被显示的 el-drawer,再显示被点击的元素对应的 el-drawer。
以下是示例代码:
```html
<template>
<el-container>
<el-aside>
<el-tree
:data="treeData"
@node-click="handleNodeClick">
</el-tree>
</el-aside>
<el-main>
<el-drawer v-for="(item, index) in drawerData" :key="index" :visible="item.visible">
<p>{{ item.content }}</p>
</el-drawer>
</el-main>
</el-container>
</template>
<script>
export default {
data() {
return {
treeData: [
{
label: 'Node 1'
},
{
label: 'Node 2'
}
],
drawerData: [
{
content: 'Content 1',
visible: false
},
{
content: 'Content 2',
visible: false
}
],
currentDrawerIndex: -1
}
},
methods: {
handleNodeClick(data) {
const index = data.id - 1
if (this.currentDrawerIndex !== -1) {
this.drawerData[this.currentDrawerIndex].visible = false
}
this.drawerData[index].visible = true
this.currentDrawerIndex = index
}
}
}
</script>
```
在这个示例代码中,我们使用了 el-tree 和 el-drawer 两个组件来实现控制的效果。通过遍历 el-drawer 数组来展示多个抽屉,并在点击 el-tree 元素时显示当前元素对应的抽屉。当点击下一个元素时,当前正在显示的抽屉将隐藏,而新的抽屉将显示。
阅读全文