当前位置:首页 > VUE

vue 实现点击选中

2026-03-28 07:03:36VUE

Vue 实现点击选中功能

在 Vue 中实现点击选中功能可以通过多种方式完成,以下是几种常见的方法:

方法一:使用 v-model 和 v-bind:class

通过绑定 class 来实现选中样式变化。

<template>
  <div>
    <div
      v-for="item in items"
      :key="item.id"
      @click="selectedItem = item.id"
      :class="{ 'selected': selectedItem === item.id }"
    >
      {{ item.text }}
    </div>
  </div>
</template>

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

<style>
.selected {
  background-color: #f0f0f0;
  border: 1px solid #ccc;
}
</style>

方法二:使用计算属性

vue 实现点击选中

通过计算属性动态判断是否选中。

<template>
  <div>
    <div
      v-for="item in items"
      :key="item.id"
      @click="toggleSelect(item.id)"
      :class="isSelected(item.id)"
    >
      {{ item.text }}
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, text: 'Item 1' },
        { id: 2, text: 'Item 2' },
        { id: 3, text: 'Item 3' }
      ],
      selectedItem: null
    };
  },
  methods: {
    toggleSelect(id) {
      this.selectedItem = id;
    }
  },
  computed: {
    isSelected() {
      return (id) => ({
        selected: this.selectedItem === id
      });
    }
  }
};
</script>

<style>
.selected {
  background-color: #f0f0f0;
  border: 1px solid #ccc;
}
</style>

方法三:使用数组存储多个选中项

vue 实现点击选中

如果需要支持多选,可以通过数组存储选中项。

<template>
  <div>
    <div
      v-for="item in items"
      :key="item.id"
      @click="toggleMultiSelect(item.id)"
      :class="{ 'selected': selectedItems.includes(item.id) }"
    >
      {{ item.text }}
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, text: 'Item 1' },
        { id: 2, text: 'Item 2' },
        { id: 3, text: 'Item 3' }
      ],
      selectedItems: []
    };
  },
  methods: {
    toggleMultiSelect(id) {
      const index = this.selectedItems.indexOf(id);
      if (index === -1) {
        this.selectedItems.push(id);
      } else {
        this.selectedItems.splice(index, 1);
      }
    }
  }
};
</script>

<style>
.selected {
  background-color: #f0f0f0;
  border: 1px solid #ccc;
}
</style>

方法四:使用 Vuex 管理选中状态

如果项目中使用 Vuex,可以通过全局状态管理选中项。

// store.js
export default new Vuex.Store({
  state: {
    selectedItem: null
  },
  mutations: {
    setSelectedItem(state, payload) {
      state.selectedItem = payload;
    }
  }
});
<template>
  <div>
    <div
      v-for="item in items"
      :key="item.id"
      @click="$store.commit('setSelectedItem', item.id)"
      :class="{ 'selected': $store.state.selectedItem === item.id }"
    >
      {{ item.text }}
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, text: 'Item 1' },
        { id: 2, text: 'Item 2' },
        { id: 3, text: 'Item 3' }
      ]
    };
  }
};
</script>

<style>
.selected {
  background-color: #f0f0f0;
  border: 1px solid #ccc;
}
</style>

以上方法可以根据具体需求选择适合的实现方式。

标签: vue
分享给朋友:

相关文章

vue实现全局遮罩层

vue实现全局遮罩层

实现全局遮罩层的方法 在Vue中实现全局遮罩层可以通过多种方式完成,以下是几种常见的实现方法: 使用Vue组件创建遮罩层 创建一个遮罩层组件,通过全局注册或动态挂载的方式实现全局调用。以下是一个简单…

实现vue模版

实现vue模版

Vue 模板的基本结构 Vue 模板基于 HTML 语法,通过 Vue 的指令和插值实现动态渲染。以下是一个基础模板示例: <template> <div id="app"…

vue实现https

vue实现https

Vue 中实现 HTTPS 的步骤 在 Vue 项目中实现 HTTPS 主要涉及开发环境配置和生产环境部署。以下是具体方法: 开发环境配置(Vue CLI 或 Vite) 使用 mkcert 生成…

vue交互实现

vue交互实现

Vue 交互实现方法 Vue.js 提供了多种方式实现用户交互,包括事件处理、表单绑定、动态渲染等。以下是常见的交互实现方法: 事件处理 通过 v-on 或 @ 指令绑定事件,触发方法或直接执行表达…

vue ref实现

vue ref实现

Vue 中 ref 的实现 在 Vue 中,ref 是一个用于创建响应式引用的 API,适用于基本类型和对象。以下是 ref 的核心实现原理和使用方法。 基本实现原理 ref 通过 Reactive…

vue实现select

vue实现select

Vue 实现 Select 组件的方法 在 Vue 中实现 Select 组件可以通过多种方式完成,以下是几种常见的方法: 使用原生 HTML select 元素 原生 HTML 的 <sel…