<script type="text/javascript"> $(function(){ var checks=<?php echo json_encode($output['limit']); ?>; function guid() { return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8); return v.toString(16); }); } var checkboxs={}; var buildTreeData=function(data,parent){ for(var i=0;i<data.length;i++) { if(data==undefined||data.length==0) { return []; } var item=data[i]; item.guid=guid(); item.parent=parent; item.ischecked=false; item.checkednum=0; item.uncheckednum=0; item.ismiddle=false; item.childlength=0; checkboxs[item.guid]=item; if(item['child']) { item.childlength=item['child'].length; buildTreeData(item['child'],item); } } }; var itemchecked=function(ischecked,item) { var changeItems=[]; checkedChildTree(ischecked,item,changeItems); checkedParentTree(ischecked,item,item.ismiddle,changeItems); return changeItems; }; //所有自己都选中或不选中 var checkedChildTree=function(ischecked,item,changeItems){ if(item==undefined) { return; } item.ischecked=ischecked; item.ismiddle=false; if(!item.child) { return; } for(var i=0;i<item['child'].length;i++) { var child=item['child'][i]; child.ischecked=ischecked; child.ismiddle=false; checkedChildTree(ischecked,child,changeItems); changeItems.push(child); } changeItems.push(item); }; //检查选中个数 var checkedParentTree=function(ischecked,item,ismiddle,changeItems) { if(item==undefined||item.parent==undefined||item.parent.child==undefined) { return; } var parent=item.parent; parent.checkednum=0; parent.ischecked=false; parent.ismiddle=false; for(var i=0;i<parent.child.length;i++) { var child=parent.child[i]; if(child.ischecked) { parent.checkednum++; } } if(parent.checkednum==parent.childlength) { parent.ischecked=true; } if(parent.checkednum>0&&parent.checkednum<parent.childlength)//如果父级是部分选中状态 { parent.ismiddle=true; } if(ismiddle) { parent.ismiddle=true;//所有的父级都是部分选中状态 } changeItems.push(parent); checkedParentTree(ischecked,parent,parent.ismiddle,changeItems); }; var showTree=function(checks,index){ if(checks==undefined||checks.length==0) { return ""; } var class_name=''; var span_class=''; switch(index) { case 0: span_class='span0'; class_name='li0';break; case 1: class_name='li1';break; default: class_name='li2';break; } index++; var ul="<ul>"; //给li元素分组 for(var i=0;i<checks.length;i++) { var cname="class='"+class_name+"'"; var sname="class='"+span_class+"'"; var level=index; var item=checks[i]; var guid=checks[i]['guid']; var guidspan=guid+'_span'; // var parentid=checks[i].parent?checks[i].parent.guid:''; var ischecked=item.ischecked; var ismiddle=item.ismiddle; if(ischecked) { ul+="<li "+cname+"><span id='"+guidspan+"' "+sname+"><input type='checkbox' id='"+guid+"' class='l_check' level='"+level+"' checked='checked'>"+checks[i].name+"</span>"; }else{ ul+="<li "+cname+"><span id='"+guidspan+"' "+sname+"><input type='checkbox' id='"+guid+"' class='l_check' level='"+level+"' >"+checks[i].name+"</span>"; } if(checks[i]['child']) { var t=showTree(checks[i]['child'],index); ul+=t; } ul+="</li>"; } if(index>=2) { ul+="<div class='clear'></div>"; } ul+='</ul>'; return ul; }; buildTreeData(checks);//构造基本数据 var html=showTree(checks,0,'',[]); $("#ltree").html(html); $('.l_check').live('change',function(){ var checked=$(this).attr("checked"); var guid=$(this).attr('id'); var item=checkboxs[guid]; var changelist=itemchecked(checked=="checked",item); for(var i=0;i<changelist.length;i++) { var nitem=changelist[i]; $('#'+nitem.guid).attr('checked',nitem.ischecked); $('#'+nitem.guid).attr('checkednum',nitem.checkednum); if(nitem.ismiddle) { $('#'+nitem.guid+"_span").addClass('spanmiddle'); }else { $('#'+nitem.guid+"_span").removeClass('spanmiddle'); } } }); }); </script>
相关推荐
**jsTree 中文文档概述** jsTree 是一个流行的JavaScript库,用于在网页上创建交互式的树状视图。它主要用于组织结构化的数据,如文件系统、数据库目录或自定义项目结构。jsTree 支持多种操作,包括点击、拖放、...
**jsTree API详解** jsTree 是一个流行的JavaScript库,用于创建、操作和展示交互式的HTML树状视图。它提供了一套丰富的API,使得开发者能够方便地实现树形结构的各种功能,如添加、删除、修改节点,以及节点的移动...
**jsTree:构建前端树形结构的利器** jsTree 是一个强大的 JavaScript 库,专用于在 Web 页面上创建交互式的树形结构。它基于纯 JavaScript 编写,无需依赖其他库,因此对于初学者和有经验的开发者来说,都是一个...
**jsTree.v.1.0中文文档** jsTree是一款基于JavaScript的开源库,主要用于创建、操作和展示HTML页面上的树状结构。它适用于构建复杂的交互式界面,如文件管理系统、组织架构图、导航菜单等。jsTree v.1.0是该库的一...
**jsTree 概述** jsTree 是一个基于 JavaScript 的开源库,专为创建交互式的树状视图而设计。它提供了丰富的功能,如动态加载、增删节点、拖放操作等,使得在网页中实现复杂的数据结构展示变得简单。jsTree 支持...
**JsTree 全面解析与实战指南** JsTree 是一个基于 JavaScript 的开源库,用于创建交互式的树形数据结构。这个强大的工具适用于多种用途,包括文件管理、菜单系统、数据可视化等。它提供了丰富的功能,如多选、拖放...
**JSTree:高效处理大数据量的JavaScript树形菜单组件** 在Web开发中,树形菜单是一种常见的数据展示形式,用于组织和展示层次结构的数据。JSTree是一款基于JavaScript的开源库,专为构建功能丰富的交互式树形菜单...
**jstree.min.js** 是一个基于 jQuery 的交互式树形视图插件,它允许在网页中创建和管理结构化的目录或数据展示。这款插件以其轻量级、高度可定制和易于使用的特性而受到开发者们的欢迎。下面将详细介绍 jstree 的...
在移动设备上,为了有效地展示层次结构数据,如文件系统、组织架构或导航菜单,"手机端js tree"成为了一种实用的解决方案。这个技术基于JavaScript,专为智能手机和平板电脑等移动端设备设计,提供了可自定义的树形...
**jsTree:构建交互式目录树的利器** jsTree是一款完全用JavaScript编写的开源库,专为实现跨浏览器的树状视图而设计。它在Web应用中扮演着目录树控件的角色,允许用户以树形结构展示数据,极大地提高了用户体验。...
**jsTree大集合** jsTree是一款强大的JavaScript库,专门用于创建、操作和展示HTML页面中的树状结构。这个“jsTree大集合”很可能是包含了一系列关于jsTree的资源、示例代码、文档以及可能的插件集合,为开发者提供...
**jsTree 与 Java 整合详解** jsTree 是一个流行的 JavaScript 库,用于创建交互式的树状视图。它提供了丰富的功能,如节点的拖放、搜索、上下文菜单等,广泛应用于网站的导航菜单、文件管理器、数据结构展示等领域...
jstree是一个流行的JavaScript库,专门用于在前端创建交互式的树形结构。它适用于构建诸如文件浏览器、组织架构图或层级菜单等应用。这个中文文档详细介绍了jstree的核心功能和API,使得开发者能更容易地理解和使用...
**jsTree动态tree详解** jsTree是一款基于JavaScript的开源库,专门用于构建交互式的树形视图。在网页开发中,树形结构常用于展示层级关系的数据,如目录、组织结构或导航菜单等。jsTree提供了丰富的API和可定制的...
**jsTree 大集合** jsTree 是一个流行的 JavaScript 库,专门用于在 Web 应用程序中创建交互式树形视图。它提供了一个强大的工具集,帮助开发者构建功能丰富的数据展示和操作界面,适用于组织结构、文件系统、菜单...
**JsTree静态例子详解** JsTree是一款基于JavaScript的开源库,专门用于创建、操作和展示树状数据结构。它在Web应用中广泛用于构建可交互的目录结构、文件管理系统或者组织复杂的分类信息。本篇文章将深入探讨如何...
**JsTree 实例使用详解** JsTree 是一个强大的JavaScript库,专为构建交互式的树状视图而设计。它在Web开发中广泛应用于文件管理、菜单系统、组织结构展示等多种场景。JsTree 提供了丰富的功能,如动态加载、节点...
**jsTree:JavaScript实现的树形菜单** jsTree是一款基于JavaScript的开源库,专门用于创建交互式的树形菜单。它提供了丰富的功能和多种定制选项,适用于网页中的数据组织和展示,如导航菜单、文件系统视图或者数据...
**JStree 全面解析** JStree 是一个基于 JavaScript 的开源库,专用于创建交互式的树形数据结构。这个强大的工具支持多种操作,包括拖放、搜索、多选、加载异步数据(AJAX)等,广泛应用于网页中的菜单、文件浏览器...
**jsTree 操作详解** jsTree 是一个基于 jQuery 的开源 JavaScript 库,用于创建交互式的树状视图。它提供了一种优雅的方式来呈现和操作数据结构,尤其适用于构建树形菜单或目录。jsTree 支持多种功能,包括动态...