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

Vue中当子元素aria-expanded为true时如何为父元素添加类

解决方案

你可以通过以下两种方案实现需求,均不需要引入jQuery,符合Vue开发规范:


方案1:CSS :has() 选择器(代码量最少,无需修改JS逻辑)

目前主流新版本浏览器均已支持:has()父元素选择器,你可以直接添加以下CSS样式实现效果,无需修改模板代码:

/* 注意:你原代码中div的id在v-for循环中会重复,建议先把id="active-hov-div"改为class="active-hov-div" */
.active-hov-div:has(.brand-nav-item-link[aria-expanded="true"]) {
  background-color: #e5e7eb; /* 可自定义灰色深浅 */
}

注意:该方案不兼容 Safari 15.4 以下、Chrome 105 以下版本浏览器,如果你的产品需要覆盖极旧版本用户,可使用方案2。


方案2:Vue状态绑定(兼容性拉满,符合Vue最佳实践)

通过绑定Bootstrap下拉的内置事件同步展开状态,动态给父div加背景类即可:

第一步:添加响应式状态

如果是Vue3:

// script中添加响应式变量,记录当前展开的下拉项索引
import { ref } from 'vue'
const openIndex = ref(-1)

如果是Vue2:

// data中添加变量
data() {
  return {
    openIndex: -1
  }
}

第二步:修改模板代码

<li v-for="(item, index) in locations" :key="index">
  <!-- 动态绑定背景类,同时把重复的id改为class -->
  <div 
    class="active-hov-div" 
    :class="{'bg-gray': openIndex === index}"
  >
    <a
      class="brand-nav-item-link"
      type="button"
      data-bs-toggle="dropdown"
      aria-expanded="false"
      <!-- 监听Bootstrap下拉的显示/隐藏事件,同步展开状态 -->
      @show.bs.dropdown="openIndex = index"
      @hide.bs.dropdown="openIndex = -1"
    >
      <label class="active-hov">
        {{item.label}}
      </label>
        <i class="fa fa-sort-down test-down"></i>
        <i class="fa fa-sort-up test-up"></i>
    </a>
    <!-- 原下拉菜单代码保持不变 -->
    <div class="dropdown-menu dropdown-menu-end locations-ul">
      <li class="locations-li">
        <FindACommunity />
      </li>
      <ul class="locations-dropdown-ul">
      <li v-for="(item3, index3) in item.locationsTitles" :key="index3" class="nav-item" style="padding-bottom: 8px">
        <a class="brand-nav-dropdown-link" :href="item3.url">{{item3.title}}</a>
      </li>
      </ul>
    </div>
  </div>
</li>

第三步:添加自定义样式

.bg-gray {
  background-color: #e5e7eb; /* 自定义灰色深浅 */
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:36:01