JQ完成模拟QQ好友分组案例(介绍JQ实现原理)

当我们写这个案例之前,需要引入好JQ文件,以防没有效果
这个案例的需求请看以下效果图
不能重复点击,只有删除掉之后才可以继续点击
效果图:
在这里插入图片描述

代码介绍:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        .boss {
            position: relative;
            width: 500px;
            height: 600px;
            border: 1px solid black;
            margin: 100px auto;
        }

        li {
            list-style: none;
        }

        .left {
            position: absolute;
            width: 50%;
            height: 100%;
            border: 1px solid red;
            top: 0;
            left: 0;
        }

        .right {
            position: absolute;
            width: 50%;
            height: 100%;
            border: 1px solid pink;
            right: 0;
            top: 0;
        }

        .left_text1,
        .left_text2 {
            width: 50px;
            cursor: pointer;
        }

        .left_box1>div {
            cursor: pointer;
        }

        .box1 {
            cursor: pointer;
        }

        .boss1 {
            height: 20px;
            overflow: hidden;
        }

        .left_text1 {
            float: left;
        }

        .left_text2 {
            float: left;
        }

        .jia {
            height: 20px;
            float: left;
            cursor: pointer;
        }
    </style>
</head>

<body>
    <!-- 大容器 -->
    <div class="boss">
        <!-- 左边分组 -->
        <div class="left">
            <!-- 分组1 -->
            <div class="boss1">
                <div onclick="group(this)" class="left_text1">分组1 </div>
                <div class="jia" onclick="jia(this)">+</div>
            </div>
            <!-- 到时候直接隐藏这个盒子分组1 -->
            <div class="left_box1">
                <div data="1" onclick="fun(this)">1</div>
                <div data="2" onclick="fun(this)">2</div>
                <div data="3" onclick="fun(this)">3</div>
                <div data="4" onclick="fun(this)">4</div>
            </div>
            <!-- 分组2 -->
            <div class="boss1">
                <div onclick="group(this)" class="left_text2">分组2 </div>
                <div class="jia" onclick="jia(this)">+</div>
            </div>
            <!-- 到时候直接隐藏这个盒子分组2 -->
            <div class="left_box1">
                <div data="5" onclick="fun(this)">11</div>
                <div data="6" onclick="fun(this)">22</div>
                <div data="7" onclick="fun(this)">33</div>
                <div data="8" onclick="fun(this)">44</div>
                <div data="9" onclick="fun(this)">1</div>
                <div data="10" onclick="fun(this)">2</div>
                <div data="11" onclick="fun(this)">3</div>
                <div data="12" onclick="fun(this)">4</div>
            </div>
        </div>
        <!-- 右边 -->
        <div class="right"></div>
    </div>
</body>
<script src="jquery-1.8.3.min.js"></script>
<script>
    // 注意 我先写了行内事件 全是传入this this指向本身
    // 这是点击分组1与分组2来回显示隐藏
    function group(e) {
        // 看布局 点击分组1或分组2后找到需要隐藏的div添加toggle()
        // toggle()的作用是看你元素是否显示或隐藏 如果是显示它就隐藏 如果是隐藏它就显示
        $(e).parent().next().toggle()
    }
    // 点击数字模块
    function fun(e) {
        // e 传入的是this 就是本身
        // 先不看这一个判断 主要的是下面Clone部分 读懂Clone部分再来看这一段
        // 判断点击的是哪一边的div 因为我是直接克隆
        if ($(e).parent().attr("class") == "right") {
            // 判断点击本身父级的类名是否是right 如果是我们就删除
            e.remove()
        } else { // 如果类名不是right 就是说明是左边框中的div
            // 如果this的父级类名不是right 调用Clone()
            Clone(e)
        }
    }
    //  封装克隆与不能重复点击
    function Clone(e) {
        // 克隆 循环右边创建子级创建div的个数
        for (let i = 0; i < $(".right>div").length; i++) {
            // 判断自身的自定义属性是否与右边框子级div的自定义属性是否相等
            console.log($(".jia").parent().next().children().attr("data"), $(".right>div").eq(i).attr("data"));
            if ($(e).attr("data") == $(".right>div").eq(i).attr("data")) {
                // 相等直接返回 这是不能重复点击
                return
            }
        }
        // 我们直接就是克隆 点了哪个就克隆哪个 
        let divs = $(e).clone(true)
        // 添加类名 主要还是添加一个小手样式
        divs.addClass("box1")
        // 我们把克隆好的div添加到右边框中
        $(".right").append(divs)
    }
    // 点击+
    function jia(e) {
        // 我们直接调用Clone()
        // 我们把左边中数字添加到右边 children()获取所有子元素
        // 看到这注意看我的布局就可以找到
        // 必须循环 
        for (let i = 0; i < $(e).parent().next().children().length; i++) {
            // children()获取的是一个集合
            Clone($(e).parent().next().children().eq(i))
        }
    }
</script>
</html>

感谢大家的阅读,如有不对的地方,或是有bug的地方,可以向我提出,感谢大家,过一段时间会写一篇用原生JS实现这个案例。

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

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

相关文章

leetcode:2926. 平衡子序列的最大和 【树状数组维护最大前缀和】

题目链接 lc2926 题目描述 题目思路 定义b[i] nums[i] - i 目标是从b中找到一个非降子序列使得元素和最大 # b[i] nums[i] - i # 找到b的一个非降子序列使得元素和最大 # f[i]: 子序列最后一个数下标是i&#xff0c;对应的最大子序列 # f[i] max (max f[j], 0) nums[i] …

Qt利用VCPKG和CMake和OpenCV和Tesseract实现中英文OCR

文章目录 1. 开发平台2. 下载文件2.1 下载安装 OpenCV 库2.2 下载安装 Tesseract-OCR库2.3 下载训练好的语言包 3. CMakeLists.txt 内容4. Main.cpp4.1 中英文混合OCR 5. 在Qt Creator 中设置 CMake vcpkg5.1 在初始化配置文件里修改5.2 在构建配置里修改 说明&#xff1a;在Q…

FineReport----报表模板入门

FineReport----报表模板入门教程1 FineReport就一款类Excel操作界面的报表工具&#xff0c;通过拖拖拽拽简单实现报表制作&#xff0c;实现数据展示、数据查询、数据录入功能&#xff0c;并且支持图形多样化展示。 一、入门小例子 1. 打开设计器 启动FineReport设计器&…

[NLP] Llama2模型运行在Mac机器

本文将介绍如何使用llama.cpp在MacBook Pro本地部署运行量化版本的Llama2模型推理&#xff0c;并基于LangChain在本地构建一个简单的文档Q&A应用。本文实验环境为Apple M1 芯片 8GB内存。 Llama2和llama.cpp Llama2是Meta AI开发的Llama大语言模型的迭代版本&#xff0c;…

【蓝桥杯软件赛 零基础备赛20周】第2周——常考知识点+判题

文章目录 0. 第1周答疑1. 常考知识点2. 蓝桥杯怎么判题2.1 判题系统如何判题2.2 测试数据和得分的关系2.3 自己做测试数据 3. 备赛计划4. 本周刷题 0. 第1周答疑 问题1&#xff1a;蓝桥杯怎么报名&#xff0c;什么时候报名&#xff1f; 答&#xff1a;集体报名或个人报名。大…

Appium 移动端自动化测试,触摸(TouchAction) 与多点触控(MultiAction)

一、触摸 TouchAction 在所有的 Appium 客户端库里&#xff0c;TouchAction 触摸对象被创建并被赋予一连串的事件。 规范里可用的事件有&#xff1a; * 短按(press) * 释放(release) * 移动到(moveTo) * 点击(tap) * 等待(wait) * 长按(longPress) * 取消(cancel) * 执行(per…

记录腾讯云重置密码之后ssh就连不上的踩坑

腾讯云轻量级服务器SSH连不上 解决方案在最后&#xff0c;点我跳转 问题背景&#xff1a; 首先ssh ubuntu用户我是能用xshell带上密钥正常连接的 其次我重置了root密码&#xff0c;自己改了一个root密码&#xff0c;因为我要用root账号使用ftp传输文件 然后重置密码之后&…

设计模式—结构型模式之桥接模式

设计模式—结构型模式之桥接模式 将抽象与实现解耦&#xff0c;使两者都可以独立变化。 在现实生活中&#xff0c;某些类具有两个或多个维度的变化&#xff0c;如图形既可按形状分&#xff0c;又可按颜色分。如何设计类似于 Photoshop 这样的软件&#xff0c;能画不同形状和不…

Chrome插件精选 — 广告拦截插件

Chrome实现同一功能的插件往往有多款产品&#xff0c;逐一去安装试用耗时又费力&#xff0c;在此为某一类型插件挑选出比较好用的一款或几款&#xff0c;尽量满足界面精致、功能齐全、设置选项丰富的使用要求&#xff0c;便于节省一个个去尝试的时间和精力。 1. Adblock Plus 广…

Qt应用开发--国产工业开发板T113-i的部署教程

Qt在工业上的使用场景包括工业自动化、嵌入式系统、汽车行业、航空航天、医疗设备、制造业和物联网应用。Qt被用来开发工业设备的用户界面、控制系统、嵌入式应用和其他工业应用&#xff0c;因其跨平台性和丰富的功能而备受青睐。 Qt能够为工业领域带来什么好处&#xff1a; - …

最受欢迎的程序员副业排行榜TOP6

程序员接单的情况并不少见&#xff0c;因为程序员职业工种的特殊性&#xff0c;能够比较快的衔接上新项目和新技术&#xff0c;所以接私活做副业成了许多程序员的不二之选。 程序员的副业是指程序员在业余时间里从事与编程相关的兼职工作&#xff0c;或者是与技术相关的创业项…

【渗透测试】垂直越权(高危)、水平越权(中危)

目录 一、简介1.1 水平越权&#xff08;中危&#xff09;1.2 垂直越权&#xff08;高危&#xff09;1.3 方便记忆方法 二、修复方案2.1 水平越权修复2.2 垂直越权修复 一、简介 1.1 水平越权&#xff08;中危&#xff09; 漏洞危害&#xff1a; 水平越权 是相同级别&#xff0…

Photoshop图片处理

工具 Photoshop剪映 步骤 打开photoshop 工具主界面 2. 导入素材图片 或者直接将图片拖入主界面 3. 双击图层&#xff0c;将背景图改为可编辑图层 4. 使用多边形套索工具勾画需要搽除的区域 5. 希望删除的区域使用多边形套索工具勾画出来后&#xff0c; 按“del”键&a…

Flink SQL时间属性和窗口介绍

&#xff08;1&#xff09;概述 时间属性&#xff08;time attributes&#xff09;&#xff0c;其实就是每个表模式结构&#xff08;schema&#xff09;的一部分。它可以在创建表的 DDL 里直接定义为一个字段&#xff0c;也可以在 DataStream 转换成表时定义。 一旦定义了时间…

菜鸟打印组件系列-vue3快速接入

文章目录 前言1. 相关名词或语句2. CAINIAO打印组件能力3. 安装与下载4. vue3集成步骤4.1 使用pina 创建websoket相关处理的模块。4.2 创建本地自定义模板&#xff08;要打印的模板以及样式&#xff09;4.3 结合el-table &#xff0c;实现批量打印 总结 前言 文章主要记录不注…

Kubernetes Dashboard 用户名密码方式登录

Author&#xff1a;rab 前言 为了 K8s 集群安全&#xff0c;默认情况下 Dashboard 以 Token 的形式登录的&#xff0c;那如果我们想以用户名/密码的方式登录该怎么操作呢&#xff1f;其实只需要我们创建用户并进行 ClusterRoleBinding 绑定即可&#xff0c;接下来是具体的操作…

【Docker】Docker中 的AUFS、BTRFS、ZFS、存储池概念的详细讲解

前言 作者简介&#xff1a; 辭七七&#xff0c;目前大二&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; 七七的闲谈 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&…

Jupyter Notebook交互式开源笔记本工具

1、官网 http://jupyter.org/ 2、什么是Jupyter Notebook Jupyter Notebook一个交互式的开源笔记本工具&#xff0c;可以用于编写、运行、和共享代码、文本、图形等内容。 如下文本、代码、图形 支持多种编程语言&#xff0c;包括python、R和Julia等&#xff0c;可以走一个…

【elasticsearch+kibana基于windows docker安装】

创建网络&#xff1a;es和kibana容器互联 docker network create es-net加载镜像 docker pull elasticsearch:7.12.1运行 docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.typesingle-node" -e ES_JAVA_OPTS"-Xms512m -Xmx512m" -v $…

【ES专题】ElasticSearch搜索进阶

目录 前言阅读导航前置知识特别提醒笔记正文一、分词器详解1.1 基本概念1.2 分词发生的时期1.3 分词器的组成1.3.1 切词器&#xff1a;Tokenizer1.3.2 词项过滤器&#xff1a;Token Filter1.3.3 字符过滤器&#xff1a;Character Filter 1.4 倒排索引的数据结构 <font color…
最新文章