当前位置:首页 > VUE

vue实现列表点击

2026-01-18 06:35:09VUE

Vue 实现列表点击的方法

在 Vue 中实现列表点击功能通常涉及 v-for 渲染列表和 v-on(或 @)绑定点击事件。以下是几种常见实现方式:

基础列表点击

使用 v-for 渲染列表,并通过 @click 绑定点击事件:

<template>
  <ul>
    <li 
      v-for="(item, index) in items" 
      :key="index"
      @click="handleClick(item)"
    >
      {{ item.name }}
    </li>
  </ul>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, name: 'Item 1' },
        { id: 2, name: 'Item 2' }
      ]
    }
  },
  methods: {
    handleClick(item) {
      console.log('Clicked:', item)
    }
  }
}
</script>

高亮当前选中项

通过动态类名或样式实现选中状态:

<template>
  <ul>
    <li 
      v-for="item in items" 
      :key="item.id"
      @click="selectedItem = item"
      :class="{ 'active': selectedItem === item }"
    >
      {{ item.name }}
    </li>
  </ul>
</template>

<script>
export default {
  data() {
    return {
      selectedItem: null,
      items: [
        { id: 1, name: 'Item 1' },
        { id: 2, name: 'Item 2' }
      ]
    }
  }
}
</script>

<style>
.active {
  background-color: #f0f0f0;
}
</style>

传递额外参数

若需要同时传递索引或其他参数:

vue实现列表点击

<template>
  <ul>
    <li 
      v-for="(item, index) in items" 
      :key="index"
      @click="handleClick(item, index, $event)"
    >
      {{ item.name }}
    </li>
  </ul>
</template>

<script>
export default {
  methods: {
    handleClick(item, index, event) {
      console.log('Item:', item, 'Index:', index, 'Event:', event)
    }
  }
}
</script>

使用事件修饰符

Vue 提供的事件修饰符可简化事件处理:

<template>
  <ul>
    <li 
      v-for="item in items" 
      :key="item.id"
      @click.stop="handleClick(item)"
    >
      {{ item.name }}
    </li>
  </ul>
</template>

常用修饰符:

vue实现列表点击

  • .stop:阻止事件冒泡
  • .prevent:阻止默认行为
  • .once:只触发一次

性能优化

对于长列表,建议使用 v-once 或虚拟滚动:

<li 
  v-for="item in items" 
  :key="item.id"
  v-once
  @click="handleClick(item)"
>
  {{ item.name }}
</li>

组件化列表项

将列表项封装为组件实现复用:

<template>
  <ul>
    <list-item 
      v-for="item in items" 
      :key="item.id"
      :item="item"
      @item-click="handleClick"
    />
  </ul>
</template>

<script>
import ListItem from './ListItem.vue'

export default {
  components: { ListItem },
  methods: {
    handleClick(item) {
      console.log('Parent received:', item)
    }
  }
}
</script>

ListItem.vue 组件:

<template>
  <li @click="$emit('item-click', item)">
    {{ item.name }}
  </li>
</template>

<script>
export default {
  props: ['item']
}
</script>

标签: 列表vue
分享给朋友:

相关文章

vue 实现直播

vue 实现直播

Vue 实现直播的基本方法 在Vue中实现直播功能,通常需要结合WebRTC、RTMP或HLS等技术。以下是几种常见的实现方式: 使用WebRTC实现实时直播 WebRTC适合低延迟的实时直播场景,…

vue实现高亮

vue实现高亮

Vue 实现文本高亮的方法 在 Vue 中实现文本高亮可以通过多种方式完成,以下是几种常见的方法: 方法一:使用 v-html 指令 通过 v-html 指令可以动态插入 HTML 内容,将需要高…

vue实现键盘

vue实现键盘

Vue 实现键盘功能 在Vue中实现键盘功能通常涉及监听键盘事件、处理输入以及渲染虚拟键盘界面。以下是几种常见的实现方式: 监听键盘事件 通过@keydown或@keyup指令监听键盘事件,适用于需…

vue实现购票

vue实现购票

Vue 实现购票功能 数据结构设计 购票功能通常需要以下数据结构: 场次信息(时间、地点、价格) 座位信息(可选座位、已售座位) 用户订单信息 示例数据结构: data() { return…

vue filter 实现

vue filter 实现

在 Vue.js 中,过滤器(Filter)是一种用于文本格式化的功能,可以在模板中直接使用。以下是实现过滤器的详细方法: 全局过滤器注册 通过 Vue.filter 方法注册全局过滤器,可在所有组…

vue实现拉伸

vue实现拉伸

Vue 实现元素拉伸功能 在Vue中实现元素的拉伸(拖拽调整大小)功能,可以通过监听鼠标事件结合CSS样式来实现。以下是两种常见实现方式: 使用原生事件监听 创建可拉伸的组件需要处理鼠标按下、移动和…