tnblog
首页
视频
资源
登录

思宇课后实例—全选和部分选中

3453人阅读 2019/3/24 22:43 总访问:14588 评论:2 收藏:0 手机
分类: .net


    jQuery课后实例


    昨天我们初次写了全(不)选和反选功能,今天我们来写下它的变种功能


    1.首先我们老规矩,来看下需求


    


    2.然后我们继续来看下HTML代码


    

    

    


    3.然后我们开始理性的分析一波,事实的真相只有一个


            我们在不改变HTNL的源码基础下,分析一下,三个功能大项,他们的class属性都为parentfunc,我们给classparentfunc的元素添加一

    个单击事件,再添加各大项后面所有小项的选中和取消选中的功能,就可以实现1.2两个需求了。可是三个大项的class相同,我们如何保证中某一

    个大项,它后面的小项被选中或者取消选中,其他项不会改变呢?

            在这里我们就要了解子节点,父节点,祖父节点的知识了!直接上图:


    

    

        我们点击了大项的复选框,它后面的小项要被选中。我们看HTML代码会发现,三个大项与其后面的小项位置关系是相同的,我们借此实现功

    能。复选框的<input>标签的父节点是<span>,<td><span>的父节点,我们在找到<td>的兄弟节点下面的后代元素,再设置属性就OK啦!

    如图:


    


    


    效果很奈斯一步到位!


    4.后面我们来完成取消选中的功能,与选中类似。只需把checked的属性设置为false


    


    其实我们结合之前的知识可以简化代码,依旧使用is()方法


    


    这样可以一步到位,实现1.2两点需求,奈斯!


    5.后面的功能就很容易实现啦,我们一起来


        


    因为这里大项也是复选框,我就用$("input[type='checkbox']:not(.parentfunc)")代替$("input[type='checkbox']"),以提高效率


    效果如图:

        

    


    补充:在后面的学习中,我学习到了更简单的方法,可以一步解决3.4点功能,我们一起来看下吧


        思路:我们在这里的思想是循环判断所以小项的复选框是否中,代码就比较多,这也是比较常规的操作,我们一起来学习别人的好思路。我们

可以拿到当前点击小项的所以小项的个数,我们在判断下小项的总个数是否相等于我们选中的小项个数,是则为全选,具体代码如下:


    


    这次功能的实现再加上以前的内容,像这种选中的功能就可以很容易的实现啦!快去试一试吧!


    注意:在实现这次功能的时候,遇到了一个小坑parent()parents()


        parent()是找该元素的父元素,我就天真的以为parents()就是其的祖父元素,没想到,还是我太年轻了


        直接上图:


        


        

    


    很明显我们可以看出来parent()是找该元素的父节点<span>


      我们在试试parents()方法:

        

    


    喔豁,竟然全红了,这不是我要的结果啊!我再试试


    


    父亲的父亲为祖父,没想到还真的是这样,后面我去了下资料才知道:


  • parent(selector) 获得当前匹配元素集合中每个元素的父元素,由选择器筛选(可选)。

  • parents(selector) 获得当前匹配元素集合中每个元素的祖先元素,由选择器筛选(可选)。

    parents()是找得祖先元素,那就有父亲,祖父,祖祖父....... 难怪会全红了,笑哭


    补充:开始我们找祖父元素的时候用的是.parent().parent(),在后面的学习中我了解到用.parents()方法会更加的简单,例如,这次功能中,我们

找小项的祖父元素就可用.parents("td"),.parents()找的是祖先元素,我们就可以规定祖先元素的类型,从而找到特定的祖先,这样找辈分更高的祖

先不是更简单了吗?而且也不.parent一个个找了,简化代码。而且因为我们这里用到了兄弟元素,其实是不太恰当的,如果<td>有多个兄弟元素,

那特定的元素就不太好找,我们这里可以用.next()和.prev向下查或 向上查找特定元素更加的合理规范。


    我们定它个小目标,每天写个小功能,加油了,啦啦啦!


    


评价

师友

2019/3/27 11:29:26

要坚持更新哦,思宇同学

思宇:@师友恩恩,有好的就来分享下

2019/4/7 18:56:37 回复

思宇上课笔记初识jQuery

JQuery(前端)什么是jQuery?jQuery就只是一个一个JavaScript函数库而已什么是js的库就是封装的一些js常用的的方法。eg:Dom...

思宇上课笔记全(不)选反选功能的实现

jQuery课堂实例在平时生活中,全(不)选和反选的功能非常实用,今天我们用jQuery来简单实现它。1.首先我们来看下需求2.看一...

思宇上课笔记jQuery插件的编写

jQuery课堂实例相信我们每个人在学习jQuery中,都或多或少的使用到了jQuery插件,jQuery插件使用起来确实非常的方便,快捷...

思宇上课笔记SQL数据库分页查询的方式

jQuery课堂实例分页在实际开发中经常被用到,今天就来介绍下SQL数据库分页的几种常见方式。 下面的例子都以每分5条数据为一...

jQuery为动态添加的元素绑定事件

我们在使用jQuery的时候总会遇到形形色色的问题在jQuery的元素绑定事件中,我通常使用click来绑定单击事件,但是这个只能绑...

Netty入门教程认识Netty

什么是Netty?Netty 是一个利用 Java 的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的 API 的客户端/服务器框架...

停止程序运行PID

一、cmd-&gt;C:\Users\admin&gt;netstat -nao二、根据对应端口查找:PID三、四、根据根据PID结束进程

为Maven空模块配置框架类型pom的设置

一、pom.xml的使用只要你的依赖没问题,想生成什么项目都可以,这个要对Maven稍稍要有一定的了解如生成一个spring boot的项...

Mybatis自关联单表创建的父子级关系

单表创建的父子级关系。但是它是子级指向父级,一个子集只能有一个父亲,所以字段parent只是一个对象,而不是集合1、创建实...

Git 的版本管理0401切换版本

查看所有分支的所有记录(包括已经被删除的commit记录):git reflog切换版本:git reset --hard 唯一索引接着Git常用命令0...

Git 的版本管理0402创建、切换、合并、删除分支

查看分支下的文件:ls查看所有分支:git branch创建分支:git branch 分支名切换分支:git checkout 分支名合并分支:git m...

Redis内存兜底策略内存淘汰及回收机制

Redis内存兜底策略——内存淘汰及回收机制Redis内存淘汰及回收策略都是Redis内存优化兜底的策略,那它们是如何进行兜底的呢...
做个有趣的人!
排名
74
文章
5
粉丝
3
评论
4
思宇上课笔记—全(不)选反选功能的实现
读着倒看猪 : 该说点啥呢。。。
思宇课后实例—全选和部分选中
师友 : 要坚持更新哦,思宇同学
思宇上课笔记—初识jQuery
剑轩 : [斜眼笑]有点意思
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术
男人从小的时候就是无药可救的。