vue 点击当前item项,实现单选或多选高亮业务

2023-11-04

单选业务:

template

<template>
  <div class="a-page">
    <ui>
      <li
        v-for="(item, index) in obj"
        :key="index"
        :class="{ active: index == currentIndex }"
        @click="onClickLi(index)"
      >
        {{ item.names }}
      </li>
    </ui>
  </div>
</template>

css

<style lang="scss" scoped>
.a-page {
  padding: 30px;
}
li {
  color: #333;
}
.active {
  color: red !important;
}
</style>

js

<script setup>
import {ref} from 'vue'
let obj = [
  { names: '唐僧', checked: false },
  { names: '孙悟空', checked: false },
  { names: '猪八戒', checked: false },
  { names: '悟静', checked: false },
  { names: '玫瑰', checked: false },
  { names: '向日葵', checked: false },
  { names: '百合', checked: false },
  { names: '海棠', checked: false }
]
const currentIndex = ref()
const onClickLi = (index) => {
  currentIndex.value = index
}
</script>

多选业务:

 template

  <div class="a-page">
    <ui>
      <li
        v-for="(item, index) in obj"
        :key="index"
        :class="{ active: item.checked }"
        @click="onClickLi(item, index)"
      >
        {{ item.names }}
      </li>
    </ui>
  </div>

 js

<script setup>
import { ref } from 'vue'
let obj = ref([
  { names: '唐僧', checked: false, id: 1 },
  { names: '孙悟', checked: false, id: 2 },
  { names: '猪八', checked: false, id: 3 },
  { names: '悟静', checked: false, id: 4 },
  { names: '玫瑰', checked: false, id: 5 },
  { names: '向日', checked: false, id: 6 },
  { names: '百合', checked: false, id: 7 },
  { names: '海棠', checked: false, id: 8 }
])

const list = ref([]) //存储多选的数据
const onClickLi = (item, index) => {
  obj.value.forEach((item1) => {
    if (item.id == item1.id) {
      item1.checked = !item1.checked
      if(item1.checked){
        list.value.push(item1)
      }else{
        list.value.splice(list.value.indexOf(item1),1)
      }
    }
  })
  console.log(list.value);
}
</script>

 下面贴出来实验代码:

巧妙的利用数组的some和filter方法,进行数据的多选 / style控制 及 选择限制,项目中可以择优选择套用

<template>
  <div>
    <div v-for="tag in tags" :key="tag.id" :class="{ 'selected': isSelected(tag) }" @click="toggleTag(tag)">
      {{ tag.name }}
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      tags: [
        { id: 1, name: '标签1' },
        { id: 2, name: '标签2' },
        { id: 3, name: '标签3' },
        { id: 4, name: '标签4' },
        { id: 5, name: '标签5' },
      ],
      selectedTags: [],
    };
  },
  computed: {
    selectedCount() {
      return this.selectedTags.length;
    },
  },
  methods: {
    toggleTag(tag) {
      if (this.selectedCount >= 3 && !this.isSelected(tag)) {
        return;
      }
      console.log(this.isSelected(tag));
      if (this.isSelected(tag)) {
        this.selectedTags = this.selectedTags.filter((t) => t.id !== tag.id);
      } else {
        this.selectedTags.push(tag);
      }
      console.log(this.selectedTags);
    },
    isSelected(tag) {
      return this.selectedTags.some((t) => t.id === tag.id);
    },
  },
};
</script>

<style>
.selected {
  background-color: #ccc;
}
</style>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue 点击当前item项,实现单选或多选高亮业务 的相关文章

  • 仅当表单已提交时才触发 jQuery 表单验证?

    不引人注目的验证基于这样的想法 don t进行表单验证 直到用户提交表单 一旦发生这种情况 如果表单上的某些内容无效 那么一旦用户更改了每个字段 就会立即验证它 我想做的是 不显眼地 触发表单元素的验证 也就是说 only如果用户已尝试提交
  • 取消html5浏览器中的单图请求

    我正在动态加载 大 图像以绘制到 html5 画布中 如下所示 var t new Image t onload t src http myurl 但每隔一段时间就会想取消图片请求完全地 我想出的唯一方法是设置src to i e t sr
  • Jquery从下拉列表中获取所选值的id

    我有一个下拉列表 可以从数据库获取值 如下所示 get getJobs function jobs seljobs jobs var i 0 jobs forEach function n alert job id n id 32 67 4
  • 如何使用 jest 模拟第三方库

    我正在开发一个node js应用程序使用nestjs我有一堂课叫LoggerService如下 export class LoggerService private logger Rollbar constructor this logge
  • Leaflet js虚构地图

    我是 Leaflet 的新手 我想了解如何创建完全交互式的虚构地图 我有一张图像想要转换为传单地图 该图像基本上像图表一样具有许多连接和点 我想首先将该图像转换为地图 能够将鼠标悬停在这些点上 突出显示它们并显示有关它们的信息 并且还可以在
  • 使用 CryptoJS 更改密钥 [重复]

    这个问题在这里已经有答案了 我正在使用 CryptoJS 来加密和解密文本 在这里 我只是获取消息并显示加密和解密消息 我使用DES算法进行加密和解密 这是我的 HTML 文件
  • 检查 touchend 是否在拖动后出现

    我有一些代码可以更改表的类 在手机上 有时表格对于屏幕来说太宽 用户将拖动 滚动来查看内容 但是 当他们触摸并拖动表格时 每次拖动都会触发 touchend 如何测试触摸端是否是触摸拖动的结果 我尝试跟踪dragstart和dragend
  • 是否可以使用 javascript 测试用户的浏览器/操作系统是否支持给定类型的链接?

    是否可以使用 javascript 或其他任何东西 测试用户的操作系统 浏览器是否支持给定的 url 方案 例如 大多数仅使用网络邮件的用户计算机上未设置 mailto 是否有可能以某种方式捕获单击 mailto 链接的尝试并弹出比浏览器错
  • HTML2canvas 和 Canvas2image,下载的屏幕截图不显示我的 HTML 图像

    我一直在开发一个 HTML 页面 我想将其转换为图像 我一直在使用 html2canvas 和 canvas2image 脚本并采用此代码http jsfiddle net 8ypxW 3 http jsfiddle net 8ypxW 3
  • JavaScript 中数组的 HTML 数据列表值

    我有一个简单的程序 它必须从服务器上的文本文件中获取值 然后将数据列表填充为输入文本字段中的选择 为此 我想要采取的第一步是我想知道如何动态地将 JavaScript 数组用作数据列表选项 我的代码是
  • 如果链接包含特定文本,jQuery 将类添加到 href

    我的网站上的列表中有一些动态填充的链接 这些链接链接到文件 是否可以使用 jQuery 查看文件名是否以 pdf 结尾 并在 href 或类似的链接文本以 mp3 结尾时添加一个类 例如 我的列表中有以下链接 文件1 pdf 歌曲1 mp3
  • 未捕获的错误:找不到模块“jquery”

    我在用Electron https github com atom electron制作桌面应用程序 在我的应用程序中 我正在加载一个外部站点 Atom 应用程序之外 可以说http mydummysite index html http
  • 是否有任何非轮询方式来检测 DOM 元素的大小或位置何时发生变化?

    很长一段时间以来 我一直在寻找一种方法来检测 DOM 元素的大小或位置何时发生变化 这可能是因为窗口调整了大小 或者因为向该元素添加了新的子元素 或者因为在该元素周围添加了新元素 或者因为 CSS 规则已更改 或者因为用户更改了浏览器的字体
  • 淡出和循环一组 div 的最佳方式

    假设我有以下 div div class a You are funny div div class b You are smart div div class c You are cool div 最好的展示方式是什么div a持续 5
  • 将 javascript 整数转换为字节数组并返回

    function intFromBytes x var val 0 for var i 0 i lt x length i val x i if i lt x length 1 val val lt lt 8 return val func
  • Twitter 嵌入时间轴小部件

    我继续下载http platform twitter com widgets js http platform twitter com widgets js And the http platform twitter com embed t
  • 数据表日期范围过滤器

    如何添加日期范围过滤器 like From To 我开始进行常规搜索和分页等工作 但我不知道如何制作日期范围过滤器 我正在使用数据表 1 10 11 版本 My code var oTable function callFilesTable
  • 如何在 Google 地图 V3 中创建编号地图标记?

    我正在制作一张上面有多个标记的地图 这些标记使用自定义图标 但我还想在顶部添加数字 我已经了解了如何使用旧版本的 API 来实现这一点 我怎样才能在V3中做到这一点 注意 当您将鼠标悬停在标记上时 标题 属性会创建一个工具提示 但我希望即使
  • 需要有关 React Js 的帮助

    我是 React Js 新手 我的代码无法正常工作 请看下面 这是我的脚本文件Main jsx 该文件由 React 编译 输出放置在 dist 文件夹下的 main js 文件中 var react require react react
  • 使用异步调用时如何从 javascript 更新元刷新?

    我有一个系统 它使用元刷新来注销页面 该系统会在空闲用户后进行清理 不用担心 服务器也会导致会话超时 我开始通过 ajax 进行一些操作 不是真正的 xml 但这不是重点 我可以运行从异步请求返回的javascript 所以我想知道是否可以

随机推荐

  • 1.2 DICOM成像协议剖析

    以下链接是本系列文章 不足之处 可在评论区讨论 系列文章 1 1 DICOM协议简介及应用 1 2 DICOM成像协议剖析 1 3 DICOM成像协议实现思路 1 4 DICOM图像CT值计算 1 5 DICOM图像CT值转RGB 1 6
  • linux+性能排查,Linux系统性能排查基础

    此文已由作者李晶授权网易云社区发布 欢迎访问 上一期运维季刊中 我们重点从CPU方面分析了Linux系统性能瓶颈 除了CPU之外 内存 IO和网络也是常见的造成系统出现问题的根源 本篇我们继续介绍如何从这三个子系统来排查Linux整个系统的
  • Redis配置数据持久化---APPEND ONLY MODE

    Redis可以实现数据的持久化存储 即将数据保存到磁盘上 Redis的持久化存储提供两种方式 RDB与AOF RDB是默认配置 AOF需要手动开启 现在Redis的配置中默认是关闭AOF模式的 如果要开启AOF模式 修改Redis的配置文件
  • [5机器学习]计算机视觉的世界-卷积神经网络(CNNs)

    我们知道 数据不仅包含文字 数字 还包含图片 视频等 如何更好地查看 识别和解释图像和视频的内容 就像人类视觉一样 一直是目前人工智能的主要研究方向 机器学习无疑是现代数据科学的核心 在经历了几十年回归 分类 决策树 异常检测的沉淀后 数据
  • 期货投资者教育系列丛书 铝

    铝是一种轻金属 其化合物在自然界中分布极广 地壳中铝的资源约为400 500 亿吨 仅次于氧和硅 具第三位 在金属品种中 仅次于钢铁 为第二大类金属 铝具有特殊的化学 物理特性 不仅重量轻 质地坚 而且具有良好的延展性 导电性 导热性 耐热
  • 2022春招前端最新面试题分享(航天宏图)

    航天宏图面经 公司及岗位信息 公司 航天宏图 岗位 前端校招 地点 北京 薪资 10k 15k 面试结果 二面必须让线下面试 去不了 一面 2022 04 21 自我介绍 为什么没有在实习公司转正 实习对于你最大的收获 WebSocket在
  • qt connect 无效_QT 信号槽connect写法

    先看下示例 QPushButton btn new QPushButton 方式一 老式写法 connect btn SIGNAL clicked this SLOT close 方式二 Qt5后新写法 connect btn QPushB
  • Vue父组件子组件的通信方式20种(全网最全总结)

    目录 一 常用 Props 父组件 子组件 emit和 on 父组件 子组件 parent和 children 父组件 子组件 attrs和 listeners 父组件 子组件 provide和inject 父组件 子组件 二 其他探索 E
  • Ubuntu安装Visual Studio Code

    一 Visual Studio Code介绍 Visual Studio Code 简称VS Code 是一款由微软开发的跨平台代码编辑器 它支持多种编程语言 包括C C Java JavaScript Python等等 VS Code具有
  • 快乐E栈项目实战第五阶段

    快乐E栈项目实战第五阶段 文章目录 快乐E栈项目实战第五阶段 1 前言 2 功能分析 3 简单协议设计 4 代码 1 服务端 2 客户端 5 结果 服务端 客户端 1 前言 学习完网络编程了 我们可以试着开发一个服务端程序 将快递信息发送到
  • I帧、P帧、B帧

    I帧 P帧 B帧 简单地说 I帧是关键帧 属于帧内压缩 就是和AVI的压缩是一样的 P是向前搜索的意思 B是双向搜索 他们都是基于I帧来压缩数据 I帧表示关键帧 你可以理解为这一帧画面的完整保留 解码时只需要本帧数据就可以完成 因为包含完整
  • 华为OD机试真题-最左侧冗余覆盖子串【2023.Q1】

    题目描述 给定两个字符串 s1 和 s2 和正整数k 其中 s1 长度为 n1 s2 长度为 n2 在s2中选一个子串 满足 1 该子串长度为n1 k 2 该子串中包含s1中全部字母 3 该子串每个字母出现次数不小于s1中对应的字母 我们称
  • 4万字 全面解读数据中台、数据仓库、数据湖等概念!建议收藏!

    作者丨修鹏李 建议阅读需50分钟 如今 随着诸如互联网以及物联网等技术的不断发展 越来越多的数据被生产出来 据统计 每天大约有超过2 5亿亿字节的各种各样数据产生 这些数据需要被存储起来并且能够被方便的分析和利用 随着大数据技术的不断更新和
  • JWT登录过期自动刷新方案与token泄漏解决方案

    概念 简单来说JWT就是通过一定规范来生成token 再用解密算法解密token 就可以获取用户信息了 优缺点 优点 避免重复查库 存储在客户端 不占用服务端资源 缺点 token是经过base64编码 所以可以解码 因此token加密前的
  • 微博数据处理——处理僵尸用户数据集(二)

    获取僵尸用户数据集可见上文 https blog csdn net weixin 43906500 article details 116447858 1 数据集展示 僵尸数据集如下所示 2 处理数据集 编写处理代码 将所需训练数据保存为c
  • Vue 集成 stylus和stylus-loader

    stylus和stylus loader安装 cnpm i stylus S cnpm i stylus loader S stylus使用 一 语法不再需要括号 相比之前语法简洁
  • 家庭个人服务器的搭建之路--非傻瓜式描述

    本文记录了个人亲身搭建samba服务的经历 对于软件如何安装之类的内容没有详细讲解 需要各位自行解决软件安装问题 本文主要讲解了Samba服务器外网可访问的拓扑架构以及实现方式 我的服务器环境描述 一台ubuntu主机 OS使用的是Ubun
  • MyBatis报错MySQLIntegrityConstraintViolationException:Column "某一个列名" cannot be null

    Integrity 完整性 Constraint 约束 Violation违反 即违反完整性约束异常 列名不能为空 the error occurred while setting parameters
  • 23.8.18.查询接口时候,有低代码的要根据低代码来查询接口,千万不要盲目的看代码上的介绍。

    康代码上的介绍可太坑人了 所以有低代码的要直接在低代码里面搜索 不要盲目相信代码上的介绍是xx接口 有些程序y就是懒 复制过来 随便写个介绍或者不写介绍
  • vue 点击当前item项,实现单选或多选高亮业务

    单选业务 template