You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vuetify中禁用状态的v-list-item无法显示v-tooltip问题求助

禁用状态v-list-item的v-tooltip显示问题解决

问题说明

需要实现:当action对象包含isDisable属性时,禁用对应的v-list-item,同时显示提示tooltip,但原代码中禁用状态下tooltip无法触发。原代码如下:

<v-list>
  <v-list-item
    v-for="(action, i) in actions"
    :key="`action-${i}`"
    :disabled="action.isDisable"
  >
    <v-tooltip>
      <template v-slot:activator="{ on, attrs }">
        <v-list-item-content v-bind="attrs" v-on="on">
          <v-list-item-title>{{ action.name }}</v-list-item-title>
        </v-list-item-content>
      </template>
      <span>Tooltip for disabled list.</span>
    </v-tooltip>
    <v-list-item-content v-else>
      <v-list-item-title>{{ action.name }}</v-list-item-title>
    </v-list-item-content>
  </v-list-item>
</v-list>

问题原因

禁用状态的DOM元素会拦截所有鼠标事件,而v-tooltip默认依赖hover等鼠标事件触发,绑定在禁用元素内部的内容上时,事件无法正常传递,导致tooltip无法显示。

解决方案

方案1:将tooltip绑定到v-list-item并启用disabled支持

直接把tooltip的激活器绑定到v-list-item本身,同时给v-tooltip添加disabled属性,强制tooltip在元素禁用时依然响应事件:

<v-list>
  <v-list-item
    v-for="(action, i) in actions"
    :key="`action-${i}`"
    :disabled="action.isDisable"
  >
    <v-tooltip :disabled="!action.isDisable">
      <template v-slot:activator="{ on, attrs }">
        <v-list-item-content v-bind="attrs" v-on="on">
          <v-list-item-title>{{ action.name }}</v-list-item-title>
        </v-list-item-content>
      </template>
      <span>Tooltip for disabled list.</span>
    </v-tooltip>
  </v-list-item>
</v-list>

方案2:用外层容器包裹禁用项,绑定tooltip到容器

给禁用的v-list-item套一个非禁用的外层容器,将tooltip绑定到这个容器上,容器能正常接收鼠标事件,从而触发tooltip:

<v-list>
  <template v-for="(action, i) in actions" :key="`action-${i}`">
    <div v-if="action.isDisable">
      <v-tooltip>
        <template v-slot:activator="{ on, attrs }">
          <div v-bind="attrs" v-on="on">
            <v-list-item :disabled="true">
              <v-list-item-content>
                <v-list-item-title>{{ action.name }}</v-list-item-title>
              </v-list-item-content>
            </v-list-item>
          </div>
        </template>
        <span>Tooltip for disabled list.</span>
      </v-tooltip>
    </div>
    <v-list-item v-else>
      <v-list-item-content>
        <v-list-item-title>{{ action.name }}</v-list-item-title>
      </v-list-item-content>
    </v-list-item>
  </template>
</v-list>

内容的提问来源于stack exchange,提问作者user3756907

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 23:17:45