IE9+的树状下拉菜单,支持多选
//JS核心代码
function treeBox(Config){var el=eval(Config.el);var w=Config.width;var h=Config.height;var data=Config.data;var topData=Config.topData;var sl=Config.selectedNum;if(w==null){var wLv1=160;var wLv2=160;var wLv3=160;var wSelectde=200;}else{var wLv1=w.lv1;var wLv2=w.lv2;var wLv3=w.lv3;var wSelectde=w.selected;}
if(h==null){h=280}
if(sl==null){sl=3}
var wBox=wLv1+wLv2+wLv3+wSelectde;var lv_1='';var lv_2_parent='';var lv_3_parent='';var lv_0='';for(var k in data){lv_1+='<a class="lv1" data-id="'+data[k].id+'">'+data[k].name+'</a>';lv_2_parent+='<div class="lv2-parent" data-parent="'+data[k].id+'"></div>'
for(var i in data[k].children){lv_3_parent+='<div class="lv3-parent" data-parent="'+data[k].children[i].id+'"></div>'}}
var html='';html+='<div class="treeBox" style="width:'+wBox+'px;">';if(topData==null){}else{for(var k in topData){lv_0+='<a class="tree-top-item" data-id="'+topData[k].id+'" data-uid="'+topData[k].uid+'" tree-top-selected=false>'+topData[k].name+'</a>'}
html+='<div class="tree-top"><p>常用工种类型</p><div>'+lv_0+'</div></div>';}
html+='<table cellspacing="0"><tr>';html+='<td width="'+wLv1+'" style="border-left:none;"><div class="tree tree-lv1" style="height:'+h+'px;">'+lv_1+'</div></td>';html+='<td width="'+wLv2+'"><div class="tree tree-lv2" style="height:'+h+'px;">'+lv_2_parent+'</div></td>';html+='<td width="'+wLv3+'"><div class="tree tree-lv3" style="height:'+h+'px;">'+lv_3_parent+'</div></td>';html+='<td width="'+wSelectde+'"style="border-right:none;><div class="tree">';html+='<div class="tree-status"><span style="font-size:14px;color:#777;">已选择 ( <span class="selectedNum">0</span> )</span><a class="tree-del-all">清空</a></div>';html+='<div class="tree-selected"></div></div></td>';html+='</tr></table>';html+='<div class="tree-send-val"><a class="tree-btn tree-close">关闭</a><a class="tree-btn tree-confirm">确定</a></div>';html+='</div>';$("#treeBox").append(html);var n=0;for(var k in data){var lv_2_son='';for(var i in data[k].children){n++;lv_2_son+='<a class="lv2" data-id="'+data[k].children[i].id+'">'+data[k].children[i].name+'</a>';var lv_3_son='';for(var j in data[k].children[i].children){var v=data[k].children[i].children[j].id;var name=data[k].children[i].children[j].name;var uid=data[k].children[i].children[j].uid;lv_3_son+='<label><input type="checkbox" class="lv3" value="'+v+' " data-uid="'+uid+'" data-name="'+name+'"><span>'+name+'</span></label>'}
$(".lv3-parent").eq(n-1).append(lv_3_son);}
$(".lv2-parent").eq(k).append(lv_2_son)}
$(".lv2-parent").eq(0).addClass("tree-show");$(".lv3-parent").eq(0).addClass("tree-show");$(".lv1").eq(0).addClass("tree-active");$(".lv2").eq(0).addClass("tree-active");$(".lv1").on('click',function(){var v=$(this).data('id');$(".lv2-parent").each(function(index){if($(this).data('parent')==v){$(".lv2-parent").removeClass("tree-show");$(".lv2-parent").eq(index).addClass("tree-show");$(".lv2-parent").eq(index).children().eq(0).click();}});$(".lv1").removeClass("tree-active");$(this).addClass("tree-active");$(".tree").scrollTop(0);})
$(".lv2").on('click',function(){var v=$(this).data('id');$(".lv3-parent").each(function(index){if($(this).data('parent')==v){$(".lv3-parent").removeClass("tree-show");$(".lv3-parent").eq(index).addClass("tree-show")}});$(".lv2").removeClass("tree-active");$(this).addClass("tree-active");$(".tree").scrollTop(0);});var max=sl-1;$(".lv3").on('change',function(){var v=$(this).val();var name=$(this).data('name');var uid=$(this).data('uid');var l=$(".tree-selected-item").length;if($(this).prop('checked')){if(l<max){var item='<p class="tree-selected-item" data-id="'+v+'" data-uid="'+uid+'" data-name="'+name+'"><span>'+name+'</span><a class="tree-del-this"></a></p>'
$(".tree-selected").append(item);}else if(l==max){var item='<p class="tree-selected-item" data-id="'+v+'" data-uid="'+uid+'" data-name="'+name+'"><span>'+name+'</span><a class="tree-del-this"></a></p>'
$(".tree-selected").append(item);$(".lv3:not(:checked)").prop("disabled",true);}
$(".selectedNum").text(l+1);}else{$(".tree-selected-item").each(function(index){if($(this).data('id')==v){$(".tree-selected-item").eq(index).remove()}});$(".tree-top-item").each(function(index){if($(this).data('id')==v){$(this).attr("tree-top-selected",false);$(this).removeClass('tree-active');}});$(".lv3:not(:checked)").prop("disabled",false);$(".selectedNum").text(l-1);}});$(".tree-top-item").on('click',function(){var v=$(this).data('id');var uid=$(this).data('uid');var name=$(this).text();var l=$(".tree-selected-item").length;var top_s=$(this).attr('tree-top-selected');if(top_s=='true'){return false}else{if(l<max){$(this).attr('tree-top-selected',true);$(this).addClass('tree-active');var item='<p class="tree-selected-item" data-id="'+v+'" data-uid="'+uid+'" data-name="'+name+'"><span>'+name+'</span><a class="tree-del-this"></a></p>'
$(".tree-selected").append(item);$(".lv3").each(function(index){if($(this).val()==v){$(this).prop("checked",true)}});$(".selectedNum").text(l+1);}else if(l==max){$(this).attr('tree-top-selected',true);$(this).addClass('tree-active');var item='<p class="tree-selected-item" data-id="'+v+'" data-uid="'+uid+'" data-name="'+name+'"><span>'+name+'</span><a class="tree-del-this"></a></p>'
$(".tree-selected").append(item);$(".lv3").each(function(index){if($(this).val()==v){$(this).prop("checked",true)}});$(".lv3:not(:checked)").prop("disabled",true);$(".selectedNum").text(l+1);}}})
$(".tree-del-all").on('click',function(){$(".lv3").prop("checked",false);$(".lv3:not(:checked)").prop("disabled",false);$(".selectedNum").text(0);$(".tree-selected").empty();$(".tree-top-item").attr('tree-top-selected',false);$(".tree-top-item").removeClass('tree-active');});$("body").on('click','.tree-del-this',function(){var v=$(this).parent().data('id');var l=$(".tree-selected-item").length;$(".lv3").each(function(index){if($(this).val()==v){$(this).prop("checked",false)}});$(".tree-top-item").each(function(index){if($(this).data('id')==v){$(this).attr("tree-top-selected",false);$(this).removeClass('tree-active');}});$(this).parent().remove();$(".lv3:not(:checked)").prop("disabled",false);$(".selectedNum").text(l-1);});var off=true;if(el.is("input")){el.focus(function(){$(".treeBox").css({'display':'block'})});}else{el.on('click',function(){if(off){$(".treeBox").css({'display':'block'});off=false}else{$(".treeBox").css({'display':'none'});off=true}})}
$(".tree-close").on('click',function(){$(".treeBox").css({'display':'none'});$(".lv3").prop("checked",false);$(".lv3:not(:checked)").prop("disabled",false);$(".selectedNum").text(0);$(".tree-selected").empty();$(".tree-top-item").attr('tree-top-selected',false);$(".tree-top-item").removeClass('tree-active');off=true;});var selected=[];var strSelected='';$(".tree-confirm").on('click',function(){selected=[];strSelected='';$(".tree-selected-item").each(function(){var name=$(this).data('name');var v=$(this).data('id');var uid=$(this).data('uid');selected.push({name:name,value:v,uid:uid});strSelected+=name+'&';});strSelected=strSelected.substring(0,strSelected.length-1);if(el.is("input")){el.val(strSelected)}else{if(strSelected==''){el.text('全部')}else{el.text(strSelected)}}
Config.confirm(selected);off=true;$(".treeBox").css({'display':'none'})})}
这里只贴出JS代码 demo地址:https://github.com/CNbozi/Treeview/
IE9+的树状下拉菜单,支持多选的更多相关文章
- 手把手教学~基于element封装tree树状下拉框
在日常项目开发中,树状下拉框的需求还是比较常见的,但是element并没有这种组件以供使用.在这里,小编就基于element如何封装一个树状下拉框做个详细的介绍. 通过这篇文章,你可以了解学习到一个树 ...
- selemiun 下拉菜单、复选框、弹框定位识别
一.下拉菜单识别 对下拉框的操作,主要是通过Select 类里面的方法来实现的,所以需要new 一个Select 对象(org.openqa.selenium.support.ui.Select)来进 ...
- layui+ztree 树状下拉框
一.效果图 [关闭] [展开] 二.代码 [HTML]注:布局一定要用DIV不是select否则效果···· <div class="layui-form-item"> ...
- Bootstrap 下拉菜单和滚动监听插件
一.下拉菜单 常规使用中,和组件方法一样,代码如下: //声明式用法 <div class="dropdown"> <button class="btn ...
- Bootstrap下拉菜单
前面的话 网页交互的时候经常会需要上下文菜单或者隐藏/显示菜单项,Bootstrap默认提供了用于显示链接列表的可切换.有上下文的菜单.而且在各种交互状态下的菜单展示需要和javascript插件配合 ...
- Selenium下拉菜单(Select)的操作-----Selenium快速入门(五)
对于一般元素的操作,我们只要掌握本系列的第二,三章即可大致足够.对于下拉菜单(Select)的操作,Selenium有专门的类Select进行处理.文档地址为:http://seleniumhq.gi ...
- 第二百四十四节,Bootstrap下拉菜单和滚动监听插件
Bootstrap下拉菜单和滚动监听插件 学习要点: 1.下拉菜单 2.滚动监听 本节课我们主要学习一下 Bootstrap 中的下拉菜单插件,这个插件在以组件的形式我们 已经学习过,那么现在来看看怎 ...
- DOM(十)使用DOM设置单选按钮、复选框、下拉菜单
1.设置单选按钮 单选按钮在表单中即<input type="radio" />它是一组供用户选择的对象,但每次只能选一个.每一个都有checked属性,当一项选择为t ...
- 支持多种浏览器的纯css下拉菜单
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
随机推荐
- Tensorflow从0到1(2)之基础知识
张量 张量是tensorflow中的基本数据结构 # 全零张量 zero_tsr = tf.zeros([row_dim, col_dim]) # 全1张量 ones_tsr = tf.ones([r ...
- 从零开始的Spring Boot(6、Thymeleaf内置对象及表达式大全)
1.1 基础对象 #ctx:上下文对象 ${#ctx.locale} ${#ctx.variableNames} ${#ctx.request} ${#ctx.response} ${#ctx.ses ...
- 如何在VMware虚拟机中安装CentOS6.7系统(上篇)
之前给大家分享了在VMware中如何创建CentOS虚拟机,今天给大家分享一下如何在虚拟机中安装CentOS系统,以CentOS6.7系统为例,其他的系统版本也可以参考该教程进行类似处理,具体的流程如 ...
- mongoDB的基本使用方法
MongoDB 安装(乌班图系统) apt install mongodb mongoDB与sql的对比 SQL术语/概念 MongoDB术语/概念 解释/说明 database database 数 ...
- centos下面基本的linux命令操作
参考视频: 1.如何打开命令窗口 鼠标点击右键,选择open Terminal就可以打开命令行窗口了. 现在我们可以调整这个窗口的大小,增大窗口大小使用ctrl+shif+加号,缩小窗口ctrl+减号 ...
- 学习 Spring Boot 知识看这一篇就够了
从2016年因为工作原因开始研究 Spring Boot ,先后写了很多关于 Spring Boot 的文章,发表在技术社区.我的博客和我的公号内.粗略的统计了一下总共的文章加起来大概有六十多篇了,其 ...
- gitlab在k8s上运行的一些优化
由 林坤创建,最终由 林坤修改于七月02,2020 gitlab组件图 gitlab在k8s上占用资源 kubectl top pods -n default | grep git* gitlab-g ...
- C语言资料分享
链接:https://pan.baidu.com/s/1hoc0sA0bDAq9XGC0pi2Kcg 提取码:60pn 复制这段内容后打开百度网盘手机App,操作更方便哦 c primer plus下 ...
- 轻松让HTML5可以显示桌面通知Notification非常实用
使用Notification的流程 1.检查浏览器是否支持Notification2.检查浏览器的通知权限3.如果权限不够则申请获取权限4.创建消息通知5.展示消息通知 Notification AP ...
- 10 个独特的 CSS 背景视觉效果
这几年的web设计中,大背景的设计变得越来越流行.特别是在现在大屏大行其道的情况下,设计师在设计中越来越多的使用大分辨率的背景图来填充屏幕,这样更能制造独特的视觉效果,能更好的传达他们想要向用户传达的 ...