Vue原生写全选反选框

news2024/11/17 21:32:56

效果

场景:Vue全选框在头部,子框在v-for循环内部。
实现:点击全选框,所有子项选中,再次点击取消;子项全选中,全选框自动勾选,子项并未全选,全选框不勾选;已选和全选数量统计;
在这里插入图片描述

实现

#1. html

<div class="checkall" :class="isCheck?'active':''" @click="clickAll"></div><span>全选</span>

<div class="card" v-for="(item, index) in tableData" :key="index">
	<div class="checkitem" :class="item.isCheck?'active':''" @click="clickItem(item.id)"></div>
</div>

#2. js

data() {
    return {
      tableData: [],
      isCheck:false,
      Selected: 0,
      SelectAll: 0,
    }
  },
mounted:{
	this.init();
}
methods:{
	async init(){
		let res = await ...; //请求
		this.tableData = res.data
		this.SelectAll = res.data.length;
		this.tableData = this.tableData.map(item => {
			item.isCheck = false
			return item
		})
	},
	clickItem(id){
	  this.tableData.forEach(v=>{
		v.id == id ? v.isCheck = !v.isCheck : ''
	  })
	  this.Selected = this.tableData.filter(i=>i.isCheck).length; 
	  if(this.Selected == this.SelectAll){
		this.isCheck = true;
	  }else{
		this.isCheck?this.isCheck=false:'';
	  }
	},
	clickAll(){
	  this.isCheck = !this.isCheck;
	  if(this.isCheck){
		this.tableData.forEach(v=>{
		  v.isCheck = true;
		})
	  }else{
		this.tableData.forEach(v=>{
		  v.isCheck = false;
		})
	  }
	  this.Selected = this.tableData.filter(i=>i.isCheck).length;
	}
}

#3. css

.checkall{
  height: .16rem;
  width: .16rem;
  border-radius: 0.02rem;
  border: 1px solid #1E77F5;
  margin-right: .06rem;
}
.checkall.active{
	background-color: #1E77F5;
  }
 .checkitem{
	 position: absolute;
	 top: .16rem;
	 right: .16rem;
	 height: .16rem;
	 width: .16rem;
	 border-radius: 0.02rem;
	 border: 1px solid #1E77F5;
	 margin-right: .06rem;
	 z-index: 1;
}
.checkitem.active{
    background-color: #1E77F5;
}

#完整代码:

<div class="checkall" :class="isCheck?'active':''" @click="clickAll">
	<span class="icon iconfont" style="color:#fff;" v-show="isCheck">&#xe715;</span>
</div><span>全选</span>

<div class="card" v-for="(item, index) in tableData" :key="index">
	<div class="checkitem" :class="item.isCheck?'active':''" @click="clickItem(item.id)">
		<span class="icon iconfont" style="color:#fff;" v-show="item.isCheck">&#xe715;</span>
	</div>
</div>
...
data() {
    return {
      tableData: [],
      isCheck:false,
      Selected: 0,
      SelectAll: 0,
    }
  },
mounted:{
	let res = await ...; //请求后端接口
	this.tableData = res.data
	this.SelectAll = res.data.length;
	this.tableData = this.tableData.map(item => {
		item.isCheck = false
		return item
	})
}
methods:{
	clickItem(id){
	  this.tableData.forEach(v=>{
		v.id == id ? v.isCheck = !v.isCheck : ''
	  })
	  this.Selected = this.tableData.filter(i=>i.isCheck).length; //选完统计一下选中个数,同时调用this.tableData本身可以让视图及时更新,不再调用会出现选中没效果
	  if(this.Selected == this.SelectAll){
		this.isCheck = true;
	  }else{
		this.isCheck?this.isCheck=false:'';
	  }
	},
	clickAll(){
	  this.isCheck = !this.isCheck;
	  if(this.isCheck){
		this.tableData.forEach(v=>{
		  v.isCheck = true;
		})
	  }else{
		this.tableData.forEach(v=>{
		  v.isCheck = false;
		})
	  }
	  this.Selected = this.tableData.filter(i=>i.isCheck).length;
	}
}
...
.checkall{
  height: .16rem;
  width: .16rem;
  border-radius: 0.02rem;
  border: 1px solid #1E77F5;
  margin-right: .06rem;
}
.checkall.active{
	background-color: #1E77F5;
  }
 .checkitem{
	 position: absolute;
	 top: .16rem;
	 right: .16rem;
	 height: .16rem;
	 width: .16rem;
	 border-radius: 0.02rem;
	 border: 1px solid #1E77F5;
	 margin-right: .06rem;
	 z-index: 1;
}
.checkitem.active{
    background-color: #1E77F5;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1864327.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024全国大学生信息安全竞赛(ciscn)半决赛(华中赛区)Pwn题解

简介 前段时间赛前准备把ciscn东北赛区、华南赛区、西南赛区半决赛的题都复现完了。 可惜遇到了华东北赛区的离谱平台和离谱pwn出题人&#xff1a; 假的awdp&#xff08;直接传&#x1f40e;到靶机&#xff0c;然后连上去cat /flag.txt即可&#xff09;题型分布不合理&#…

fastadmin框架修改前端时间戳格式的时区

一、上传文件 将 moment-timezone-with-data.js 和 moment-timezone-with-data.min.js 文件上传到项目的 \public\assets\libs\moment\ 文件夹中。 二、配置中引入文件 在 \public\assets\js\require-backend.js 文件中增加所引入文件的配置: moment-timezone-with-data: …

【嵌入式Linux】i.MX6ULL GPIO 中断管理与配置函数

文章目录 GPIO 中断管理与配置函数1 GPIO中断服务号2 GPIO中断相关的寄存器配置3 具体代码分析3.1 数据结构和类型定义3.2 gpio_int_enable3.3 gpio_int_disable3.4 gpio_int_flagClear3.5 gpio_int_init3.6 gpio_init 4 完整代码 本文章结合了正点原子的 i.mx6u嵌入式Linux开发…

49、基于归一化感知器的输入向量分类(matlab)

1、基于归一化感知器的输入向量分类的原理及流程 归一化感知器是一种分类算法&#xff0c;其原理基于感知器算法&#xff0c;但是在输入向量上进行了归一化处理&#xff0c;以提高算法的性能和稳定性。 流程如下&#xff1a; 输入向量归一化&#xff1a;对每个输入向量进行归…

ChatGPT只是开胃菜,AIGC风口真的来了!

去年OpenAI发布的ChatGPT在全球疯狂刷屏成为一款现象级产品&#xff0c;并成功出圈受到IT、新闻媒体、学术研究、教育等领域的广泛好评和应用。甚至有一位美国学生用ChatGPT 写论文拿下全班最高分&#xff0c;受到了全球媒体的热议。 比尔盖茨曾在今年“Reddit AMA大会”表示&…

Mamba 模型

建议观看讲解视频&#xff1a;AI大讲堂&#xff1a;革了Transformer的小命&#xff1f;专业拆解【Mamba模型】_哔哩哔哩_bilibili 1. 论文基本信息 2. 创新点 选择性 SSM&#xff0c;和扩展 Mamba 架构&#xff0c;是具有关键属性的完全循环模型&#xff0c;这使得它们适合作…

武汉星起航:跨境电商直播带货热,推动中国出口销售新飞跃

随着数字化时代的到来&#xff0c;跨境电商领域正经历着前所未有的变革。中国商务部最近发布的数据显示&#xff0c;2023年中国跨境电商进出口总额达到2.38万亿元&#xff0c;同比增长15.6%&#xff0c;其中出口更是高达1.83万亿元&#xff0c;同比增长19.6%。这一亮眼成绩的背…

电脑开不了机怎么办?无响应就试试这3个方法,快速解决黑屏

当电脑突然变得沉默寡言&#xff0c;没有任何响应&#xff0c;屏幕只剩下一片漆黑时&#xff0c;不仅会打断我们的计划&#xff0c;还可能让我们感到无助和焦虑。电脑开不了机怎么办呢&#xff1f;如果你正面临这样的困境&#xff0c;别担心&#xff0c;本文将引导你通过三个简…

一文讲解:如何理解数字化?数字化的三大本质!

在当今时代&#xff0c;一些企业对数字化概念与本质进行了专门的诠释&#xff0c;部分认为数字化是基于大数据、云计算、物联网、5G等数字技术来实现企业的管理创新&#xff0c;且这一进程的前提是建立在信息化基础之上。然而&#xff0c;也有一些专家持有不同观点&#xff0c;…

基于weixin小程序新生报到系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;学生管理&#xff0c;班级信息管理&#xff0c;师资力量管理&#xff0c;宿舍信息管理&#xff0c;宿舍安排管理&#xff0c;签到信息管理&#xff0c;论坛管理 小程序功能包括&#xff1a;系统首页&a…

用IP申请SSL证书需要注意什么?

用IP地址申请SSL证书需要选择支持IP地址验证的证书&#xff0c;验证所有权&#xff0c;正确安装和配置证书等。在互联网中&#xff0c;确保数据传输的安全性是至关重要的&#xff0c;使用SSL证书能够对数据进行加密处理&#xff0c;防止信息被窃取或篡改。使用IP地址申请SSL证书…

使用 Vanna 生成准确的 SQL 查询:工作原理和性能分析

Vanna工作原理 从本质上讲,Vanna 是一个 Python 包,它使用检索增强功能来帮助您使用 LLM 为数据库生成准确的 SQL 查询。 Vanna 的工作分为两个简单的步骤 - 在您的数据上训练 RAG“模型”,然后提出问题,这些问题将返回可设置为在您的数据库上自动运行的 SQL 查询。 vn.t…

如何安装Linux-centOS虚拟机

一、创建虚拟机 二、安装虚拟机 开启虚拟机&#xff0c;将光标移入虚拟机中&#xff0c;点击键盘上的上下键&#xff0c;移动到第一行&#xff0c;按下enter键&#xff0c;如图&#xff1a; 等待进入到如下图&#xff0c;选择中文 设置root密码

计算机毕业设计Thinkphp/Laravel校园体育器材管理系统

校园体育器材管理系统在流畅性&#xff0c;续航能力&#xff0c;等方方面面都有着很大的优势。这就意味着校园体育器材管理系统的设计可以比其他系统更为出色的能力&#xff0c;可以更高效的完成最新的体育器材、器材借用、器材归还、器材损坏、采购入库、器材报废、维修记录等…

项目实施方案(实际项目原件doc参考)

软件实施方案 二、 项目介绍 三、 项目实施 四、 项目实施计划 五、 人员培训 六、 项目验收 七、 售后服务 八、 项目保障措施 软件开发全套资料获取&#xff1a;&#xff08;本文末个人名片也可直接获取&#xff09; 软件产品&#xff0c;特别是行业解决方案软件产品不同于一…

制造业采购堡垒机的四大必要性看这里!

制造业包括的行业广泛&#xff0c;与大家的生活息息相关&#xff0c;例如食品制造业、汽车制造业、纺织业、服装制造业等等。但大家对于制造业不是很了解&#xff0c;不知道制造业也是需要采购堡垒机的&#xff0c;今天我们就来聊聊制造业采购堡垒机的必要性。 制造业采购堡垒机…

【AIGC】关于我用AI这玩意儿搞到人生第一笔副业这件事

前言 起初只是对AI感兴趣 后来没想到这玩意儿还能让我接兼职 我已经嗅到了AI的商机 接下来就是挖掘更钝金主爸爸 低收入一定要学&#xff01;&#xff01;&#xff01;&#xff01; 新手可以先从Midiourney入手 PS&#xff1a;如果不知道怎么学&#xff0c;可以扫描下方二…

76. 最小覆盖子串(困难)

76. 最小覆盖子串 1. 题目描述2.详细题解3.代码实现3.1 Python3.2 Java 1. 题目描述 题目中转&#xff1a;76. 最小覆盖子串 2.详细题解 在s中寻找一个最短的子串&#xff0c;使之包含t中的所有字符&#xff0c;t中可能存在多个相同字符&#xff0c;寻找的子串也应至少含有…

富豪王思聪的“爱情喜剧”从万达排片到网红聊天

王思聪&#xff0c;这位人生如戏、戏如人生的富二代&#xff0c; 在爱情的战场上可谓是屡战屡败&#xff0c;屡败屡战。 想当年&#xff0c;他向戚薇发起了猛烈的爱情攻势&#xff0c; 豪言壮语道&#xff1a;“若我以万达25%的排片量换你一笑&#xff0c;你可愿与我共舞&am…

计算机网络之数据通信原理

1.通信系统的基本组成 信源&#xff1a;信息的发出者&#xff1b; 信宿&#xff1a;信息的接收者&#xff1b; 载体&#xff1a;信息的传送通道&#xff1b; 变换器&#xff1a;将信息变换成载体上可传输的信号&#xff1b; 反变换器&#xff1a;将载体上传输的信号变换成信…