`
aiai20062079
  • 浏览: 1271 次
社区版块
存档分类
最新评论

javascript jquery 写的树形菜单

 
阅读更多

在网上看到一个流行的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");}
			}
		
		});
	});

 大家自行下载附件吧
 

  • 大小: 23 KB
分享到:
评论

相关推荐

    jQuery实现树形菜单

    以下是一个基本的jQuery树形菜单实现步骤: 1. **HTML结构**:创建一个基础的HTML结构,每个菜单项包含一个链接和一个可选的子菜单。 ```html 菜单1 &lt;li&gt;&lt;a href="#"&gt;子菜单1-1&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="#"&gt;...

    jquery 树形菜单

    **jQuery树形菜单详解** jQuery树形菜单是一种在网页中展示层次结构数据的交互式控件,它使得用户能够以直观、易于操作的方式浏览和管理数据。jQuery库因其简洁的语法和强大的功能,在Web开发中广泛应用,而jQuery...

    jquery树形菜单例子

    在本文中,我们将深入探讨如何使用jQuery来创建和操作树形菜单,以及如何利用特定的jQuery插件——jQuery Light Treeview。树形菜单在网页设计中广泛应用,它们为用户提供了一种有组织的方式来浏览和导航层次结构的...

    JavaScript与web树形菜单全

    JavaScript库如jQuery或原生的JavaScript方法可以用来添加事件监听器,更新DOM结构,从而实现树形菜单的交互效果。 在“dTree”这个文件中,我们可能找到了一个JavaScript实现的树形菜单库。dTree通常是一个轻量级...

    利用javascript编写的树形菜单。

    在标题和描述中提到的“利用javascript编写的树形菜单”是关于如何使用JavaScript实现这样的交互功能。 创建JavaScript树形菜单主要涉及以下几个关键知识点: 1. DOM操作:Document Object Model (DOM) 是HTML和...

    jquery左侧树形菜单

    在“jquery左侧树形菜单”项目中,`SimpleTree1.3`可能是这个树形菜单插件的版本号。这个插件可能包含了JavaScript文件、CSS样式文件以及可能的示例HTML代码,用于展示如何使用这个树形菜单。 1. **HTML结构**:...

    jquery拖拽树形菜单

    本文将详细讲解如何利用jQuery实现拖拽功能,并将其应用于树形菜单,帮助你创建交互性强、用户体验良好的Web应用。 一、jQuery基础 jQuery的核心理念是“Write Less, Do More”,通过封装JavaScript的常用功能,使...

    Jquery 树形菜单

    Jquery树形菜单则是jQuery应用的一个经典示例,它主要用于构建可交互的、层次分明的导航结构,常见于网站的侧边栏、文件管理系统等场景。在描述中提到的"优秀的Jquery树形菜单"可能是指一个高效、可定制且用户体验...

    javascript,jquery 多层树形菜单

    在创建多层树形菜单时,JavaScript用于处理用户交互,而jQuery则可以方便地选中、遍历DOM元素,以及创建平滑的过渡效果。 在多层树形菜单的实现中,我们通常会用到以下核心概念和技术: 1. **HTML结构**:菜单的...

    一个基于jQuery的简单树形菜单

    本主题聚焦于一个基于jQuery实现的简单树形菜单,这是一种轻量级且高效的方法,适用于各种Web应用。 jQuery是一个广泛使用的JavaScript库,简化了DOM操作、事件处理、动画以及Ajax交互。利用jQuery,我们可以快速...

    jquery分类树形菜单插件代码.zip

    本项目中的"jquery分类树形菜单插件代码.zip"提供了一个使用jQuery实现的SimpleTree插件,该插件专门用于创建分类树形菜单。这种菜单在网页应用中非常常见,特别是在需要组织大量数据或者层级结构清晰的导航系统时。...

    jquery树形菜单

    "jquery树形菜单"是一个利用jQuery实现的交互式树形菜单组件,它提供了可折叠和收缩的功能,使得网页中的导航更加直观和用户友好。 树形菜单通常用于展示层级结构的数据,比如网站目录、文件系统或组织结构。通过...

    jquery树形菜单很好用理解又简单

    **jQuery树形菜单详解** jQuery树形菜单是一种在网页中展示层次结构数据的高效工具,它使得用户可以方便地浏览和操作多级分类信息。在Web开发中,尤其是在需要展示目录结构、组织架构或者层级关系的数据时,jQuery...

    JavaScript实现树形菜单

    通过JavaScript实现树形菜单,可以有效地展示这些层次关系,并提供方便的展开、折叠、选择等功能。 实现JavaScript树形菜单主要涉及以下几个关键技术点: 1. 数据结构设计:首先,我们需要定义一个数据结构来存储...

    基于jquery的超强树形菜单

    "基于jQuery的超强树形菜单"是一个专门用于构建这种交互式树状菜单的库,它提供了丰富的功能和定制选项,使得在网页上创建具有复选框、级联效果以及图片展示的树形菜单变得轻而易举。 jQuery是一个广泛使用的...

    s2sh+freemarker+jquery+jquery-treeview 无限级树形菜单.rar

    本项目“s2sh+freemarker+jquery+jquery-treeview 无限级树形菜单”就是这样一个解决方案,它整合了多种技术来实现这一功能。 首先,我们来看“s2sh”。这是Struts2、Spring和Hibernate三者的简称,它们分别是MVC...

    jQuery左侧树形菜单

    "jQuery左侧树形菜单"是常见的网页导航元素,主要用于网站的左侧栏,为用户提供层次化的页面导航。这种菜单通常以折叠和展开的形式显示,用户可以通过点击节点来展开或关闭子菜单,方便快捷地访问各个页面。 创建一...

    jQuery下拉框树形分类菜单选择代码

    在这个下拉框树形菜单中,jQuery负责处理用户交互、DOM操作和数据传输。 2. **下拉框**:在HTML中,通常使用`&lt;select&gt;`标签来创建下拉菜单。但在本例中,由于需要实现树形结构,所以会用自定义的HTML元素和CSS来...

Global site tag (gtag.js) - Google Analytics