点击带el-tooltip的按钮打开el-drawer(带遮罩层的组件),el-drawer关闭后 el-tooltip不消失问题

648 阅读1分钟

在项目中,点击一个icon可以打开el-drawer,现在需要给这个icon加一个tolltip提示(鼠标经过时触发)

加完后发现鼠标移入时tooltip显示,点击按钮打开抽屉,抽屉关闭时,原本触发的tooltip并没有消失,需要点击页面后才能消失

点击打开抽屉 image.png

抽屉关闭后icon上的tolltip没消失... image.png

(通过度娘后~)

原因:因为遮罩层的问题,导致元素的事件监听不到鼠标离开,导致关闭弹窗后,浏览器又自动选中了。

解决方法:既然元素的事件监听不到鼠标的离开,说明一直有焦点触发事件,导致tooltip一直被触发,所以在点击元素时,使当前触发tooltip的dom失去焦点,从而tooltip消失

blur() 失去焦点

                <el-tooltip
                  class="linkage-tip"
                  placement="top"
                  effect="dark"
                >
                  <x-svg-icon
                    name="history-icon"
                    class="pointer icon-notice-color history-icon"
                    @click.native="onHistoryLinkage($event,linkageItem.id)"
                  />
                  <div slot="content">
                    {{ $t('design.pageSetting.intelligentLinkage.executionHistory') }}
                  </div>
                </el-tooltip>
    onHistoryLinkage (event, linkageId) {
      event.currentTarget.blur() // 解决关闭抽屉后 按钮上的tooltip不消失问题
      this.$refs.historyDrawer.openDrawer(linkageId)
    },
  • 点击的元素和触发tooltip的同一元素

    在子元素 直接使用 event.target.blur()

    子元素 使用 event.currentTargrt.blur()

  • 点击的元素和触发tooltip的不是同一元素

    可以使用ref的方式获取触发的dom元素。