在网上看到一个流行的dtree代码,看了一下,数据都是直接封装在js中,新增列表数据放在哪一层里都是手动添加的,感觉要是维护的话,还是有一点点麻烦,所以就自己写了一个。样式截图如下:
以下是html的代码段,大家可以很清楚的看清它的层级关系,这里我就不多说了,关于每个li的class是可以省略不写的。
<div class="faa_tree"> <ul> <li class="layer01"><span>我是第一层1</span> <ul> <li class="layer02"><span>我是第二层</span> <ul> <li class="layer03"><span>我是第三层08</span> </li> <li class="layer03"><span>我是第三层09</span> </li> <li class="layer03"><span>我是第三层000</span> </li> </ul> </li> <li class="layer02"><span>我是第二层02</span> <ul> <li class="layer03"><span>我是第三层sdfs08</span> <ul> <li class="layer04"><span><a target="_blank" href="www.baidu.com">我是第四层01</a></span> <ul> <li class="layer05"><span>我是第五层01</span> </li> </ul> </li> </ul> </li> <li class="layer03"><span>我是第三层dfsd09</span> </li> <li class="layer03"><span>我是第三层sfdsf000</span> </li> </ul> </li> </ul> </li> <li class="layer01"><span>我是第一层2</span> </li> <li class="layer01"><span>我是第一层3</span> <ul> <li><span><a href="www.baidu.com" target="_blank">我是第二层</a></span> </li> </ul> </li> </ul> </div>
以下是css代码段
@charset "utf-8"; /* CSS Document edit by faa*/ html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, a, img, dl, dt, dd, ol, ul, li, form, table { margin:0; padding:0; border:0; list-style:none;} div, span, h1, h2, h3, h4, h5, h6, p, a, img, dl, dt, dd, ol, ul, li, form { overflow:hidden;} input { margin:0; padding:0; } h1,h2,h3,h4,h5,h6 {font-size:12px; font-weight:normal;} a,area{blr:expression(this.onFocus=this.blur())} a { text-decoration:none;} a:hover { text-decoration:underline;} .boxcenter { margin:0 auto;} body{ font-size:12px;} .faa_tree li{margin-left:0px;line-height:12px;} .faa_tree>ul>li ul{display:none;} .faa_tree span{} .faa_tree img{position:relative;} .faa_tree img,.faa_tree span{vertical-align:text-bottom;}/* 这个属性是控制img和span水平对齐的*/
以下是js代码段
// JavaScript Document edit by faa function icons (){//定义的图标 this.folder="<img src='images/folder.gif' />"; this.empty="<img src='images/empty.gif' />"; this.folderopen="<img src='images/folderopen.gif' />"; this.join="<img src='images/join.gif' />"; this.joinbottom="<img src='images/joinbottom.gif' />"; this.line="<img src='images/line.gif' />"; this.minus="<img src='images/minus.gif' />"; this.minusbottom="<img src='images/minusbottom.gif' />"; this.page="<img src='images/page.gif' />"; this.plus="<img src='images/plus.gif' class='fold' />"; this.plusbottom="<img src='images/plusbottom.gif' class='fold' />"; } var icons=new icons(); function initTree(){ $(".faa_tree li span").parent().has("ul").each(function(){//添加文件夹的图标 if($(this).index()==($(this).parent().children().length)-1){//当这个文件夹是底部节点的时候 $(this).prepend(icons.plusbottom+icons.folder); for(var i=0;i<$(this).parents("li").length;i++){//parents()获取的是所有父栏目,从最近的父栏目开始,而prepend每次就都往前插,所以也是从最近的地方像远处插入竖线或空白,所以要从小到大的按照顺序的放,这个是添加竖线的代码 if($(($(this).parents("li"))[i]).next().html()==null){ $(this).prepend(icons.empty); } else{ $(this).prepend(icons.line);} } } else{//当这个文件夹不是底部节点的时候 $(this).prepend(icons.plus+icons.folder); for(var i=0;i<$(this).parents("li").length;i++){ if($(($(this).parents("li"))[i]).next().html()==null){ $(this).prepend(icons.empty); } else{ $(this).prepend(icons.line);} } } }); $(".faa_tree li span").parent().not($(".faa_tree li span").parent().has("ul")).each(function(){//添加单页的图标 if($(this).index()==$(this).parent().children().length-1){//当这个单页图标是底部节点的时候 $(this).prepend(icons.joinbottom+icons.page); for(var i=0;i<$(this).parents("li").length;i++){ if($(($(this).parents("li"))[i]).next().html()==null){ $(this).prepend(icons.empty); } else{ $(this).prepend(icons.line);} } } else{//当这个单页不是底部节点的时候 $(this).prepend(icons.join+icons.page); for(var i=0;i<$(this).parents("li").length;i++){ if($(($(this).parents("li"))[i]).next().html()==null){ $(this).prepend(icons.empty); } else{ $(this).prepend(icons.line);} } } }); } $(document).ready(function(){ initTree(); $(".faa_tree li .fold").click(function(e){//给folder图标加点击事件 if($(this).parent().children("ul").css("display")=="none"){ $(this).parent().children("ul").css("display","block"); $(this).next().attr("src","images/folderopen.gif"); if($(this).attr("src")=="images/plus.gif"){ $(this).attr("src","images/minus.gif");} else{ $(this).attr("src","images/minusbottom.gif"); } } else{$(this).parent().children("ul").css("display","none"); $(this).next().attr("src","images/folder.gif"); if($(this).attr("src")=="images/minus.gif"){ $(this).attr("src","images/plus.gif");} else{ $(this).attr("src","images/plusbottom.gif");} } }); });
大家自行下载附件吧
相关推荐
以下是一个基本的jQuery树形菜单实现步骤: 1. **HTML结构**:创建一个基础的HTML结构,每个菜单项包含一个链接和一个可选的子菜单。 ```html 菜单1 <li><a href="#">子菜单1-1</a></li> <li><a href="#">...
**jQuery树形菜单详解** jQuery树形菜单是一种在网页中展示层次结构数据的交互式控件,它使得用户能够以直观、易于操作的方式浏览和管理数据。jQuery库因其简洁的语法和强大的功能,在Web开发中广泛应用,而jQuery...
在本文中,我们将深入探讨如何使用jQuery来创建和操作树形菜单,以及如何利用特定的jQuery插件——jQuery Light Treeview。树形菜单在网页设计中广泛应用,它们为用户提供了一种有组织的方式来浏览和导航层次结构的...
JavaScript库如jQuery或原生的JavaScript方法可以用来添加事件监听器,更新DOM结构,从而实现树形菜单的交互效果。 在“dTree”这个文件中,我们可能找到了一个JavaScript实现的树形菜单库。dTree通常是一个轻量级...
在标题和描述中提到的“利用javascript编写的树形菜单”是关于如何使用JavaScript实现这样的交互功能。 创建JavaScript树形菜单主要涉及以下几个关键知识点: 1. DOM操作:Document Object Model (DOM) 是HTML和...
在“jquery左侧树形菜单”项目中,`SimpleTree1.3`可能是这个树形菜单插件的版本号。这个插件可能包含了JavaScript文件、CSS样式文件以及可能的示例HTML代码,用于展示如何使用这个树形菜单。 1. **HTML结构**:...
本文将详细讲解如何利用jQuery实现拖拽功能,并将其应用于树形菜单,帮助你创建交互性强、用户体验良好的Web应用。 一、jQuery基础 jQuery的核心理念是“Write Less, Do More”,通过封装JavaScript的常用功能,使...
Jquery树形菜单则是jQuery应用的一个经典示例,它主要用于构建可交互的、层次分明的导航结构,常见于网站的侧边栏、文件管理系统等场景。在描述中提到的"优秀的Jquery树形菜单"可能是指一个高效、可定制且用户体验...
在创建多层树形菜单时,JavaScript用于处理用户交互,而jQuery则可以方便地选中、遍历DOM元素,以及创建平滑的过渡效果。 在多层树形菜单的实现中,我们通常会用到以下核心概念和技术: 1. **HTML结构**:菜单的...
本主题聚焦于一个基于jQuery实现的简单树形菜单,这是一种轻量级且高效的方法,适用于各种Web应用。 jQuery是一个广泛使用的JavaScript库,简化了DOM操作、事件处理、动画以及Ajax交互。利用jQuery,我们可以快速...
本项目中的"jquery分类树形菜单插件代码.zip"提供了一个使用jQuery实现的SimpleTree插件,该插件专门用于创建分类树形菜单。这种菜单在网页应用中非常常见,特别是在需要组织大量数据或者层级结构清晰的导航系统时。...
"jquery树形菜单"是一个利用jQuery实现的交互式树形菜单组件,它提供了可折叠和收缩的功能,使得网页中的导航更加直观和用户友好。 树形菜单通常用于展示层级结构的数据,比如网站目录、文件系统或组织结构。通过...
**jQuery树形菜单详解** jQuery树形菜单是一种在网页中展示层次结构数据的高效工具,它使得用户可以方便地浏览和操作多级分类信息。在Web开发中,尤其是在需要展示目录结构、组织架构或者层级关系的数据时,jQuery...
通过JavaScript实现树形菜单,可以有效地展示这些层次关系,并提供方便的展开、折叠、选择等功能。 实现JavaScript树形菜单主要涉及以下几个关键技术点: 1. 数据结构设计:首先,我们需要定义一个数据结构来存储...
"基于jQuery的超强树形菜单"是一个专门用于构建这种交互式树状菜单的库,它提供了丰富的功能和定制选项,使得在网页上创建具有复选框、级联效果以及图片展示的树形菜单变得轻而易举。 jQuery是一个广泛使用的...
本项目“s2sh+freemarker+jquery+jquery-treeview 无限级树形菜单”就是这样一个解决方案,它整合了多种技术来实现这一功能。 首先,我们来看“s2sh”。这是Struts2、Spring和Hibernate三者的简称,它们分别是MVC...
"jQuery左侧树形菜单"是常见的网页导航元素,主要用于网站的左侧栏,为用户提供层次化的页面导航。这种菜单通常以折叠和展开的形式显示,用户可以通过点击节点来展开或关闭子菜单,方便快捷地访问各个页面。 创建一...
在这个下拉框树形菜单中,jQuery负责处理用户交互、DOM操作和数据传输。 2. **下拉框**:在HTML中,通常使用`<select>`标签来创建下拉菜单。但在本例中,由于需要实现树形结构,所以会用自定义的HTML元素和CSS来...