Vue原生写全选反选框

效果

场景: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;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据恢复篇:如何恢复丢失的Android短信?

许多用户发现自己处于重要短信意外从Android手机中删除的情况。幸运的是&#xff0c;有一些行之有效的方法可以在没有root的情况下恢复已删除的短信Android&#xff0c;这可以成为救命稻草。这些技术不需要深厚的技术知识&#xff0c;也不需要损害设备的安全性。为了帮助您摆脱…

vscode中的字符缩进问题

问题描述&#xff1a; 如图当一行代码中出现不同类型的字符时&#xff0c;使用tab缩只是插入了固定数量&#xff08;默认4&#xff09;的空格或制表符&#xff0c;仍然无法对齐。 解决方法&#xff1a; vscode找到设置&#xff0c;搜索fontFamily&#xff0c;对应输入框写入mon…

DVWA 靶场 File Upload 通关解析

前言 DVWA代表Damn Vulnerable Web Application&#xff0c;是一个用于学习和练习Web应用程序漏洞的开源漏洞应用程序。它被设计成一个易于安装和配置的漏洞应用程序&#xff0c;旨在帮助安全专业人员和爱好者了解和熟悉不同类型的Web应用程序漏洞。 DVWA提供了一系列的漏洞场…

华三中小企业组网

一、组网需求 在中小园区中&#xff0c;S5130系列或S5130S系列以太网交换机通常部署在网络的接入层&#xff0c;S5560X系列或 S6520X系列以太网交换机通常部署在网络的核心&#xff0c;出口路由器一般选用MSR系列路由器。 核心交换机配置VRRP保证网络可靠性。园区网中不同的…

selenium爬取boss直聘招聘岗位数据

selenium爬取boss直聘招聘岗位数据 一、爬取流程二、完整代码一、爬取流程 先来看一下爬取到的数据情况: 再来看一下boss直聘的页面,这时需要我们已经完成了城市的选择,将岗位名称输入到搜索框中,点击搜索之后切换到第2页。这时我们将url复制。第2页的url为:https://www.…

grpc学习golang版( 四、多服务示例)

系列文章目录 第一章 grpc基本概念与安装 第二章 grpc入门示例 第三章 proto文件数据类型 第四章 多服务示例 文章目录 一、前言二、定义proto文件三、编写server服务端四、编写Client客户端五、测试六、示例代码 一、前言 多服务&#xff0c;即一个rpc提供多个服务给外界调用…

基于requests模块爬取网易云歌曲评论并制作热词云图(2024七月最新可用,超详细讲解,从零开始完成项目,python爬虫高分大作业)

本实践大作业要求 本次实践大作业主要要求主要包括&#xff1a; 1、选择一个热点或者你感兴趣的主题作为本次爬虫实践作业要完成的任务。 2、为了完成本次任务&#xff0c;需要确定从网上爬取的数据对象与范围。 3、利用python及网络爬虫相关技术实现从网上爬取相应内容数据。 …

YOLOv8改进 | 添加注意力篇 | 结合Mamba注意力机制MLLA助力YOLOv8有效涨点(全网独家首发)

一、本文介绍 本文给大家带来的改进机制是结合号称超越Transformer架构的Mamba架构的最新注意力机制MLLA&#xff0c;本文将其和我们YOLOv8进行结合&#xff0c;MLLA&#xff08;Mamba-Like Linear Attention&#xff09;的原理是通过将Mamba模型的一些核心设计融入线性注意力…

Renesas MCU使用SCI_I2C驱动HS3003

目录 概述 1 软硬件介绍 1.1 软件版本信息 1.2 认识HS3003 1.2.1 HS3003特性 1.2.2 HS3003寄存器 1.2.2.1 温湿度数据寄存器 1.2.2.2 参数寄存器 1.2.2.3 一个参数配置Demo 1.2.3 温湿度值转换 1.2.4 HS3003应用电路 1.2.4.1 PIN引脚定义 1.2.4.2 sensor 应用电路 …

VB列表框

移动是将列表框1中选中的数字移动到列表框2中。 全部是将列表框1中所有数字移动到列表框2中。 Public Class Form1Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.LoadDim i As Integer, a As IntegerRandomize()For i 0 To 9a Int(Rnd() * 90) …

SHELL/2024/6/26

1.统计家目录下.c文件的个数 #!/bin/bash count0 for filename in $(ls ~ *.c) do ((count)) done echo count$count 2.终端输入一个.sh文件&#xff0c;判断文件是否具有可执行权限/然后运行脚本&#xff0c;没有可执行权限&#xff0c;添加可执行权运行脚本 #!/bi…

Claude Sonnet3.5注册流程 手机号验证claude注册流程小白教学

Claude Sonnet3.5 1、写在前面2、Claude Sonnet3.5注册流程2.1 准备国外 IP 节点2.2 准备谷歌账号或者邮箱2.3 准备接码平台2.4 邀请码&#xff08;可省$2&#xff09; 1、写在前面 先上图说话&#xff0c;Anthropic 在官方博客中表示&#xff0c;Claude 3.5 Sonnet 提高了智能…

【C++题解】1715. 输出满足条件的整数5

问题&#xff1a;1715. 输出满足条件的整数5 类型&#xff1a;简单循环 题目描述&#xff1a; 有这样一个四位数,其千位和百位之和为偶数&#xff0c;十位和个位之和为奇数&#xff0c;且前两位之和大于后两位之和&#xff0c;且含有因数 8 &#xff0c;请输出满足上述条件的…

《UDS协议从入门到精通》系列——图解0x35:请求上传

《UDS协议从入门到精通》系列——图解0x35&#xff1a;请求上传 一、简介二、数据包格式2.1 服务请求格式2.2 服务响应格式2.2.1 肯定响应2.2.2 否定响应 三、通信示例 Tip&#x1f4cc;&#xff1a;本文描述中但凡涉及到其他UDS服务的&#xff0c;将陆续提供链接跳转方式以便快…

python e怎么表示

exp()方法返回x的指数&#xff0c;ex。 语法 以下是 exp() 方法的语法: import math math.exp( x ) 注意&#xff1a;exp()是不能直接访问的&#xff0c;需要导入 math 模块&#xff0c;通过静态对象调用该方法。 参数 x -- 数值表达式。 返回值 返回x的指数&#xff0c;…

pd虚拟机 Parallels Desktop 19 for Mac 破解版小白安装使用指南

Parallels Desktop 19 for Mac 乃是一款适配于 Mac 的虚拟化软件。它能让您在 Mac 计算机上同时运行多个操作系统。您可借此创建虚拟机&#xff0c;并于其中装设不同的操作系统&#xff0c;如 Windows、Linux 或 macOS。使用 Parallels Desktop 19 mac 版时&#xff0c;您可在 …

山东大学多核并行2024年回忆版

2024.6.13回忆版 矩阵向量乘不可整除代码 集合通信与点对点通信的区别 块划分、循环划分、循环块划分&#xff08;14个向量&#xff0c;4个进程&#xff09; 按行访问还是按列访问快 SISD系统问题 循环依赖问题 问题&#xff1a;为什么不能对这个循环并行化&#xff0…

Unity | Shader基础知识(第十六集:简单的全息扫描效果)

目录 一、前言 二、准备模型 三、 场景准备 四、代码准备 五、透明度设置 六、补充介绍 1.Pass语法介绍 2.ColorMask 七、作者的碎碎念 一、前言 这节课的内容是接着弧形边缘光的效果之后做的。 Unity | Shader基础知识(第十四集&#xff1a;简单效果练习)_unity shade…

Kivy tutorial 005: A drawing app

Kivy tutorial 005: A drawing app – Kivy Blog Central themes: Canvas instructions 中心主题&#xff1a; canvas 结构 The next couple of tutorials will move to a new application in order to showcase some more of Kivy’s core components. In this tutorial we…

windows USB设备驱动开发通用技术

通用串行总线 (USB) 设备通过配置、接口、备用设置和终结点来定义其功能和功能&#xff0c;下面提供这些概念的高级概述。 常见 USB 方案 获取用于通信的设备句柄 &#xff0c;并使用检索到的句柄或对象发送数据传输。 USB 描述符检索 以获取有关设备配置的信息、接口、设置及…