下拉复选框
最近在项目开发中,有的地方用到了下拉复选框,于是再网上找了一下,有很多种写法,但自己感觉不是很好,又不想用插件,因为感觉引入的js太大,功能太繁杂,于是决定自己写一个小demo,效果如下:
(改善:当遇到选项比较多时,可以定义一个数组插入到HTML中,实现下拉的选项,可以参考省市区联动的写法:https://www.cnblogs.com/lprosper/p/9313536.html)
CSS:
1 div { 2 display: inline-block; 3 } 4 5 select { 6 min-width: 200px; 7 height: 25px; 8 border: 1px solid #000; 9 } 10 11 ul { 12 display: none; 13 list-style: none; 14 margin: 0; 15 padding: 0; 16 border: 1px solid #000; 17 } 18 19 label { 20 display: block; 21 padding: 2px 10px; 22 white-space: nowrap; 23 } 24 25 ul li:hover { 26 background-color: #aabbcc; 27 }
HTML:
1 <div> 2 <select name="" id="lang1"></select> 3 <ul id="ck1"> 4 <li> 5 <label><input type="checkbox">HTML</label> 6 </li> 7 <li> 8 <label><input type="checkbox">CSS</label> 9 </li> 10 <li> 11 <label><input type="checkbox">JavaScript</label> 12 </li> 13 <li> 14 <label><input type="checkbox">jQuery</label> 15 </li> 16 <li> 17 <label><input type="checkbox">PHP</label> 18 </li> 19 <li> 20 <label><input type="checkbox">MySQL</label> 21 </li> 22 </ul> 23 </div> 24 <hr><!--HTML结构不能变--> 25 <div> 26 <select name="" id="lang2"></select> 27 <ul id="ck2"> 28 <li> 29 <label><input type="checkbox">Java</label> 30 </li> 31 <li> 32 <label><input type="checkbox">C#</label> 33 </li> 34 <li> 35 <label><input type="checkbox">C++</label> 36 </li> 37 <li> 38 <label><input type="checkbox">Pyhton</label> 39 </li> 40 </ul> 41 </div> 42 <input type="button" onclick="console.log({'tag1':tag1,'tag2':tag2,})" value="查看字段">
JavaScript:
1 /** 2 * [dropDownCk 下拉复选框] 3 * @param {[String]} boxId [父级元素id] 4 * @param {[String]} selectId [下拉选id] 5 * @param {[String]} hiddenId [隐藏区域id] 6 * @return {[Array]} [description] 7 */ 8 function dropDownCk(selectId,hiddenId) { 9 10 var boxId = "#" + boxId, 11 selectId = "#" + selectId, 12 hiddenId = "#" + hiddenId; 13 14 $(hiddenId).mouseleave(function(){ // 鼠标离开隐藏复选区域 15 16 $(this).hide(); 17 18 }); 19 20 $(selectId).click(function() { // 切换显示与隐藏 21 22 $(hiddenId).toggle(); 23 24 }); 25 26 var tagArr = []; // 接收复选字段数组 27 28 $(selectId).html("<option checked='true' style='display:none;'>" + "请选择项目" + "</option>"); 29 30 $(hiddenId + ' label').find('input').click(function() { // 点击向数组添加元素 31 32 if ($(this).is(':checked')) { 33 34 tagArr.push($(this).parent().text()); 35 36 $(selectId).html("<option checked='true' style='display:none;'>" + tagArr.join(",") + "</option>"); 37 38 } else { 39 40 tagArr.splice(tagArr.indexOf($(this).parent().text()), 1); // 删除对应元素 41 42 if (tagArr.length == 0) { 43 44 $(selectId).html("<option checked='true' style='display:none;'>" + "请选择项目" + "</option>"); 45 46 } else { 47 48 $(selectId).html("<option checked='true' style='display:none;'>" + tagArr.join(",") + "</option>"); 49 50 } 51 52 } 53 54 }); 55 56 return tagArr; 57 } 58 59 var tag1 = dropDownCk("lang1","ck1"); 60 var tag2 = dropDownCk("lang2","ck2");
留下你的足迹求推荐呦
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
初识docker,弄清镜像和容器
前言: 之前总是有人拿虚拟机和容器做比较。我之前一直理解的容器,就类似于虚拟机快照类似。拿别人的东西就直接用了。在我的虚拟机中安装一下,环境就搞好了。其实容器是一个彻底解耦的东西。各个软件相互独立互不影响 什么是镜像 从docker本身来解释。镜像是一个只读文件。它可以被用来创建容器。 从方便理解的角度来说,可以说镜像就是一个类,而容器就是它派生出来的对象。一个镜像可以创建多个容器。就像一个类可以实例化多个对象一样。 那么镜像里面有什么内容呢?镜像类似一个一个的软件包。这些软件包之间相互独立,谁也不依赖谁。只有一个基础环境,可以是centos 也可以是Ubuntu。总之就是,一个软件装在一个系统里 什么是容器 容器就是在镜像的基础上可以读写。可以修改里面的内容。 当我们从互联网中pull下来镜像,这个运行这个镜像,就得到了一个容器。这个容器中除了有我们的软件之外,什么也没有。我们需要配置这个软件。而配置好了这个软件后,在容器中虽然生效了。但下一次运行镜像的时候,这些配置都消失了。所以当我们需要保存这些修改时,就需要提交修改生成新的镜像。 附上一张,我理解的容器搭建的php开发环境 容器...
- 下一篇
不设外键:用程序来实现表之间的关联
Association 相信有很多同学都有使用过Hibernate框架的开发经验,尽管现在开发人员对Hibernate的褒贬不一,我们暂且不谈这个话题。 图中的三个注解,正好解析了表与表之间的关联关系。我也就不这这方面进行过多的赘述了。所以... 今天的主题是:我想在不涉及表与表之间的关联关系的情况下对表进行关联。 换成对应的表的意思就是,不设外键,实现多对多关联。话不多说 先上一张我自己的设计手稿: 手稿 数据库:(数据库的编码(utf8)与数据库引擎(InnonDB)已经设置好了) CREATE table t_user( uid int(10) NOT NULL PRIMARY KEY AUTO_INCREMENT, username VARCHAR(100) not null, password VARCHAR(100) not null, createtime date not null )default CHARSET=utf8; -- 创建角色表 CREATE TABLE t_role( rid int(10) not null PRIMARY KEY AUTO_INCR...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2全家桶,快速入门学习开发网站教程
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Linux系统CentOS6、CentOS7手动修改IP地址
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7设置SWAP分区,小内存服务器的救世主