`

一个js的menu和tree的例子

阅读更多

利用相同的数据实现menu和tree的例子

对于相同的数据,但是在很多不同的地方,需要有不同的展现方式的时候,就需要用了

例如对于下面的数据(和标准的XML相同,只是没有根,而且每个节点必须是div)

js 代码
  1. var divData = "" +   
  2.         "<div id='menu1' label='1' value='1' backgroundImage='url(images/home.gif)'>div>" +   
  3.         "<div id='menu2' label='2' value='2'  backgroundImage='url(images/home.gif)'>div>"+   
  4.         "<div id='menu3' label='3' value='3'  backgroundImage='url(images/home.gif)'>"+   
  5.             "<div id='menu31' label='3-1'  value='31' backgroundImage='url(images/home.gif)'>div>"+   
  6.             "<div id='menu32' label='3-2'  value='32' backgroundImage='url(images/home.gif)'>div>"+   
  7.             "<div id='menu33' label='3-3'  value='33' backgroundImage='url(images/home.gif)'>"+   
  8.                 "<div id='menu331' label='3-3-1'  value='331' backgroundImage='url(images/home.gif)'>div>"+   
  9.                 "<div id='menu332' label='3-3-2'  value='332' backgroundImage='url(images/home.gif)'>div>"+   
  10.                 "<div id='menu333' label='3-3-3'  value='333' backgroundImage='url(images/home.gif)'>div>"+   
  11.             "div>"+   
  12.         "div>"+   
  13.         "<div id='menu4' label='4'  value='4' backgroundImage='url(images/home.gif)'>"+   
  14.             "<div id='menu41' label='4-1'  value='41' backgroundImage='url(images/home.gif)'>div>"+   
  15.             "<div id='menu42' label='4-2'  value='42' backgroundImage='url(images/home.gif)'>div>"+   
  16.             "<div id='menu43' label='4-3'  value='43' backgroundImage='url(images/home.gif)'>div>"+   
  17.         "div>";  

   

 

把上面的数据生成一个菜单,菜单生成只是对spry的menu进行了一下包装,返回的MenuBar对象就是一个Spry.Widget.MenuBar

 

  • js 代码
    1. //从示例数据生成菜单   
    2. var MenuBar = initHTMLMenu("menuContainer",divData);  

    其中menuContainer是一个div的id,div的具体样子如下

    type = 'MenuBarHorizontal'    菜单项水平排布(默认)
    type = 'MenuBarVertical'      菜单项垂直排布

      其中menuClick标记点击菜单时,调用的函数,注意这里只写函数名

    代码
    1. <div id="menuContainer" type='MenuBarHorizontal' menuClick='menuClick'>div>  

    把事例的数据生成一个tree形式

    js 代码
    1. //从示例数据生成树   
    2. var tree = new gavinTree("treeContainer",divData);   
    3.   
    4. function treeTitleClick(obj)   
    5. {   
    6.     alert("tree::" + obj.getAttribute("label"));   
    7. }  

    其中 treeContainer 就是一个div的ID,用来承载生成树

    treeClick用来定义,点击树的节点文字时候,调用的函数,注意只能写函数名

    html代码
    1. <div id="treeContainer" treeClick='treeTitleClick'>div>  

    具体的看demo吧

  • bug1     如果有三级菜单,则其父级的2级菜单会出现重复,感谢 metaphy  的解决方案,已经更新到demo中

    • 描述: 执行后的效果图
    • 大小: 3.5 KB
    分享到:
    评论
    7 楼 pignut_wang 2007-07-24  
    metaphy
    楼主中间还引用了SpryMenuBar.js,
    能否简单介绍一下它的用法?

    这个菜单其实就是利用spry的menu实现的,只是在外面包了一层对数据的处理,以便可以和tree使用相同的数据,从而实现不同的展现效果,
    你直接下载一个spry看看,里面有demo的,很容易看懂

    那个tree是以前的一个项目中需要用到,就自己写了一个,扩展性不太好,但是bug应该不多,至少目前我还没有发现,呵呵

    6 楼 metaphy 2007-07-24  
    人呢?
    菜单重复那个搞定

    createMenu 函数改一下,加个continue
    		if(temp.childNodes.length > 0 ) {
    			createMenu(menu,temp,clickMethod);
    			continue ;
    		}
    			
    		var item1 = createMenuItemElement(temp,clickMethod);	
    			
    		addMenuItem(menu,item1);	
    
    
    
    5 楼 jonde 2007-07-23  
    太感谢楼主的..我正愁着怎么写导航栏呢....
    4 楼 metaphy 2007-07-23  
    还有,如果有3级菜单,上一个2级菜单将会重复。
    var divData = "" +
    		"<div id='menu1' label='File' value='1' backgroundImage='url(images/home.gif)'></div>" +
    		"<div id='menu2' label='Edit' value='2'  ></div>"+
    		"<div id='menu3' label='Search' value='3'  >"+
    			"<div id='menu31' label='Find'  value='31' ></div>"+
    			"<div id='menu32' label='Replace'  value='32' ></div>"+
    			"<div id='menu33' label='Find Next'  value='33' >"+
    				"<div id='menu331' label='Find Next1'  value='331' ></div>"+
    				"<div id='menu332' label='Find Next2'  value='332' ></div>"+
    				"<div id='menu333' label='Find Next3'  value='333' ></div>"+
    			"</div>"+
    		"</div>"+
    		"<div id='menu4' label='View'  value='4' >"+
    			"<div id='menu41' label='Word Wrap'  value='41' ></div>"+
    			"<div id='menu42' label='Spell Check'  value='42' ></div>"+
    			"<div id='menu43' label='Line Number'  value='43' ></div>"+
    		"</div>";


    3 楼 metaphy 2007-07-23  
    最近写个小系统练练手,缺个菜单,所以就拿来直接用了,主要也是学习的目的。

    楼主中间还引用了SpryMenuBar.js,
    能否简单介绍一下它的用法?
    2 楼 pignut_wang 2007-07-23  
    呵呵,代码是有点不好看,有些垃圾函数没有删除
    如果需要修改,有不明白的地方,可以直接跟帖问我

    1 楼 metaphy 2007-07-23  
    感谢!
    代码有点点的乱。

    相关推荐

      转: 一个js的menu和tree的例子

      本文将详细解析一个JavaScript实现的Menu和Tree的实例,以"转: 一个js的menu和tree的例子"为例,该实例来源于花生米blog。 首先,我们来看`samples.css`。这是一个CSS样式表文件,它定义了菜单和树形结构的视觉样式...

      tigra_tree_menu

      "tigra_tree_menu"是一个专门用于创建美观且功能强大的树形菜单的JavaScript库。这个库为网页开发者提供了一种简单的方式,以交互式的、层次化的形式展示网站的导航结构。下面将详细介绍这个库的关键知识点及其相关...

      jquery 实例 目录树 menu tree

      在这个实例中,我们关注的是如何利用jQuery创建一个动态的目录树(menu tree),这是一种常见的用户界面元素,用于展示层级结构的数据,如网站导航、文件系统或数据库结构。目录树通常以缩进的形式呈现,用户可以...

      二级树形菜单示例:CSS+TreeMenu

      总的来说,这个“二级树形菜单示例:CSS+TreeMenu”提供了一个基础模板,帮助开发者了解如何使用纯CSS来创建功能完备的二级菜单。通过学习和实践,你可以根据项目需求进行定制,打造出更加复杂和个性化的菜单系统。

      Ext 中的Tree实现不同节点不同的右键菜单

      `Ext JS`是一个广泛使用的JavaScript库,它提供了丰富的组件和工具,帮助开发者构建功能强大的企业级应用。本篇将深入探讨如何在`Ext JS`中实现Tree组件的不同节点拥有不同的右键菜单,这对于提供定制化的用户体验是...

      tree+完美右键菜单

      综上所述,"Tree+完美右键菜单"是一个结合了HTML、CSS和JavaScript技术的实践案例,旨在创建一个功能强大且用户体验良好的树形结构右键菜单。通过理解并应用这些知识点,开发者可以为他们的Web应用增添更多互动性和...

      示例制作简单的树形菜单

      然后,我们调用这个函数,传入根节点和父`&lt;ul&gt;`元素(在这个例子中是`#treeMenu`)。 最后,为了让菜单具有交互性,我们可以添加一些JavaScript来控制展开和关闭子菜单。例如,当用户点击一个包含子菜单的菜单项时...

      jquery-easyui 例子

      6. **ComboBox**: ComboBox 是一个组合框,结合了文本输入框和下拉列表的功能。用户可以输入关键字进行筛选,也可以直接从下拉列表中选择。 7. **Button**: Button 提供了不同类型的按钮,如普通按钮、提交按钮、...

      ext-2.0.2 (javascript脚本例子)

      "ext-2.0.2" 是一个JavaScript库的版本号,主要专注于构建富客户端应用程序。这个库,通常称为EXTJS,是由Sencha公司开发的,它提供了一系列强大的组件和工具,用于创建交互式和复杂的网页应用。EXTJS 2.0.2是该框架...

      jquery树形菜单例子

      若一个节点有子节点,子节点会嵌套在父节点的另一个`&lt;ul&gt;`中。例如: ```html &lt;ul id="treeMenu"&gt; 菜单1 菜单1.1 菜单1.2 菜单2 ``` CSS部分,可以定义菜单节点的样式,以及展开/折叠时的视觉效果。...

      多年积攒下来的EXT3.3例子大放送

      EXTJS是一个开源的JavaScript库,由Sencha公司开发,提供了丰富的用户界面组件和数据管理功能。EXT3.3是EXTJS的一个早期版本,虽然现在已有更新的EXTJS版本,但EXT3.3仍然在许多项目中广泛使用,因为它稳定且能满足...

      Ext2.0一些小例子

      在"文件名称列表"中,我们只看到"Dengru"这个文件名,这可能是压缩包内的一个HTML文件或者JavaScript文件,用于展示具体例子。这个文件可能包含了一个或多个小的示例,例如: - 登录表单(Login Form):展示了如何...

      extjs4-ssi例子

      ExtJS 4 是一个强大的JavaScript库,用于构建富客户端Web应用程序。它提供了丰富的组件和功能,包括表格、面板、图表、表单等,使得开发者能够创建功能丰富的、交互性强的网页应用。SSI(Server Side Includes)是一...

      asp的树形菜单+access

      ASP(Active Server Pages)是一种微软开发的服务器端脚本语言,常用于构建动态网页。在ASP中实现树形菜单是一项常见的需求,特别是在构建...文件"treemenu"可能包含了实现这个功能的ASP源代码,可以进一步研究和学习。

      JavaScript 树形菜单

      在这个例子中,我们添加了一个名为`hidden`的CSS类,用于隐藏子菜单。 2. **递归渲染**:如果树形菜单的数据来源于服务器或动态生成,可以使用JavaScript的递归函数将数据转换为HTML结构。 ```javascript function...

      JS树形菜单

      以下是一个简单的例子: ```css #treeMenu { list-style-type: none; } #treeMenu li { position: relative; } #treeMenu li:before { content: '\25B6'; /* Unicode字符,表示三角箭头 */ display: inline-...

      纯JQ+CSS漂亮的折叠树形目录菜单

      本文将深入探讨如何使用jQuery(简称为JQ)和CSS来创建一个既美观又实用的折叠树形目录菜单。 首先,jQuery是一个强大的JavaScript库,它简化了DOM操作、事件处理、动画以及Ajax交互等任务。在创建折叠树形菜单时,...

      一个很好用的树形菜单

      【标题】"一个很好用的树形菜单"指的是在网页设计中使用的一种交互式用户界面元素,即树状菜单(Tree Menu)。这种菜单通常用于显示层次结构的数据,比如网站导航、文件系统或数据库结构。dhtmlxtree是实现这一功能...

      CSS TreeMenu 二级树形菜单示例

      总之,CSS TreeMenu 是一种利用CSS样式创建具有层次感和视觉吸引力的二级菜单的方法。通过精细的CSS规则和HTML结构,可以构建出功能完备、易于导航的网页菜单系统。为了适应不同的网站设计,开发者可以灵活调整颜色...

      很绚丽的EXT例子(功能还蛮多的)

      EXT是一个强大的JavaScript库,主要用于构建富客户端Web应用。EXT的核心在于其组件模型,它提供了大量预先封装好的用户界面组件,如表格、面板、菜单、工具栏等,使得开发者能够快速构建出美观且功能丰富的交互式...

    Global site tag (gtag.js) - Google Analytics