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

Vue3点击按钮操控列表项DOM元素的问题及解决办法

Vue3点击按钮操控单个列表项DOM元素的解决方案

你通过v-for渲染列表并尝试用ref获取元素,但当前拿到的是自定义组件实例而非原生DOM,无法直接操控。可以通过以下步骤解决:

1. 修改点击事件传递索引

给按钮的点击事件传递当前项的索引i,明确要操作的列表项:

<socialDiv v-for="(follower, i) in followerList" :key="follower.id" :ref="el => { followerDiv[i] = el }">
  <div class="text-md text-gray-800">{{ follower.name }}</div>
  <div class="text-sm text-gray-500">{{ follower.username }}</div>
  <button @click="handleBtnClick(i)" id="fbtn">{{ follower.btn }}</button>
</socialDiv>

2. 通过$el访问原生DOM并操作

在点击事件处理函数中,利用$el属性从组件实例中获取原生DOM节点,之后即可进行DOM操作:

<script setup>
import { ref } from 'vue'
const followerDiv = ref({})

function handleBtnClick(i) {
  // 获取目标项的原生DOM元素
  const targetElement = followerDiv.value[i].$el
  // 示例:修改背景色
  targetElement.style.background = "red"
}
</script>

说明

因为socialDiv是自定义组件,ref绑定后获取到的是组件实例对象,而非直接的原生DOM元素。$el是Vue组件实例的属性,指向组件挂载的根DOM节点,通过它就能对列表项的DOM进行各种操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 03:55:13