el-menu多层菜单打开时点击页面其他地方关闭所有菜单

关键部分:el-menu--vertical


图1,多层菜单在鼠标移入时打开,但是在移出时只有子菜单关闭,其他菜单还处于打开状态,这时就通过全局的点击事件,去关闭,思路为:
1,找到所有打开的菜单(通过‘el-menu--vertical’找到)
2,排除掉不是div的(会找到一些其他叫这个class的,但是不是我们要的菜单元素)
3,如果我们点击页面其他部位(非打开的菜单),就关闭菜单

listenerElSubment() {
      document.body.addEventListener('click', function (e) {
        //1,找到所有打开的菜单(通过‘el-menu--vertical’找到)
        let verticalEl = document.getElementsByClassName('el-menu--vertical');
        for (let n in verticalEl) {
          //2,排除掉不是div的(会找到一些其他叫这个class的,但是不是我们要的菜单元素),
          //这里的HTMLDivElement 类型是我先确定我们要找的菜单元素是这个类型之后才做的排除,可以使用verticalEl[n].constructor来看看我们自己要的菜单的类型,
          if (HTMLDivElement === verticalEl[n].constructor) {
          //3,如果我们点击页面其他部位(非打开的菜单),就关闭菜单
            if (e.target != verticalEl[n]) {
              console.log('鼠标移出');
              verticalEl[n].style.display = 'none';
            }
          }
        }
      });
    }



mounted() {
    this.$nextTick(() => {
      this.listenerElSubment();
    });
  }
posted @ 2023-05-25 15:02  sinceForever  阅读(660)  评论(0编辑  收藏  举报