- 浏览: 436301 次
- 性别:
- 来自: 茂名
文章分类
最新评论
-
zenmshuo:
不错不错,总结的很详细,不知道这个控件和FlexGrid比起来 ...
jQuery EasyUI教程之datagrid应用(三) -
我是你们的爹:
文章里太多错误了,容易误导新手
jQuery EasyUI教程之datagrid应用(三) -
我是你们的爹:
...
jQuery EasyUI教程之datagrid应用(一) -
zhehen123:
你傻啊,json_decode后面跟一个参数就可以转成普通数组 ...
如何将PHP对象数组转换成普通数组? -
lai3221:
hegz,为什么做了没有任何效果呢?
jQuery EasyUI教程之datagrid应用(二)
开发
系统
时,JavaScript树形菜单组件dTree经
常要用到,为了方便使用,我将其封装成了一个 PHP
函数
。
这样,只要控制传入的菜单数据
,即可动态创建菜单树。
大家也可参看我的《Qee开源社区》论坛贴:http://qeephp.com/bbs/viewthread.php?tid=8468&highlight=dtree
1、dTree的下载
:
http://destroydrop.com/javascripts/tree/
/** * menu -- dTree 树形菜单函数 * * @param array $menus // 菜单数据(数组) * 菜单数据样板: * $menus = array( * array('menu_id' => 0, 'parent_id' => -1, 'name' => '首页'), * array('menu_id' => 1, 'parent_id' => 0, 'name' => 'Node 1'), * array('menu_id' => 2, 'parent_id' => 0, 'name' => 'Node 2', 'url' => 'example01.html'), * array('menu_id' => 3, 'parent_id' => 1, 'name' => 'Node 1.1'), * array('menu_id' => 4, 'parent_id' => 0, 'name' => 'Node 3', 'url' => 'example01.html'), * array('menu_id' => 5, 'parent_id' => 3, 'name' => 'Node 1.1.1'), * array('menu_id' => 6, 'parent_id' => 5, 'name' => 'Node 1.1.1.1', 'url' => 'example01.html'), * array('menu_id' => 7, 'parent_id' => 0, 'name' => 'Node 4', 'url' => 'example01.html'), * array('menu_id' => 8, 'parent_id' => 1, 'name' => 'Node 1.2', 'url' => 'example01.html'), * array('menu_id' => 9, 'parent_id' => 0, 'name' => 'My Pictures', 'title' => 'Pictures I\'ve taken over the years','','','img/imgfolder.gif'), * array('menu_id' => 10, 'parent_id' => 9, 'name' => 'The trip to Iceland', 'url' => 'example01.html', 'title' => 'Pictures of Gullfoss and Geysir'), * array('menu_id' => 11, 'parent_id' => 9, 'name' => 'Mom\'s birthday', 'url' => 'example01.html'), * array('menu_id' => 12, 'parent_id' => 0, 'name' => 'Recycle Bin', 'url' => 'example01.html', 'icon' => 'img/trash.gif'), * ); * menu_id: 表示当前节点的ID * parent_id: 表示当前节点的父节点的ID,根节点的值为 -1 * name: 节点要显示的文字 * url: 节点的Url * title: 鼠标移至该节点时节点的提示文本 * target: 点击节点时,在目标窗口打开链接,可以是 _blank,_parent,_self,_top,甚至 mainFrame * icon: 用做节点关闭时的图标,节点没有指定图标时使用默认值 * iconOpen: 用做节点打开时的图标,节点没有指定图标时使用默认值 * open: 节点的默认打开状态,true打开,false关闭(不过它会读cookie, 所以有时看不出效果) * 说明: menu_id、parent_id、name 三个参数为必需,不能忽略 * * @param array $confOpts // dTree 配置选项参数(数组) * $opts = array( * 'target' => 'true'|string, // 指定所有节点在新窗口中打开链接,默认为 true * 'folderLinks' => 'true', // 文件夹可链接,默认为 true * 'useSelection' => 'true', // 节点被选择时高亮显示,默认为 true * 'useCookies' => 'true', // 用Cookies保存树的当前状态,默认为 true * 'useLines' => 'true', // 创建带线的树,默认为 true * 'useIcons' => 'true', // 创建带有图标的树,默认为 true * 'useStatusText' => 'false', // 在底部的状态栏中显示节点名还是显示节点的url,默认为 false * 'closeSameLevel' => 'false', // 同级节点树只能展开一个,默认为 false * 'inOrder' => 'false', // 如果父级节点总是添加在子级节点之前,使用这个参数可以加速菜单显示,默认为 false * ); * * @return JavaScript 脚本代码 * * 使用方法: * * 1、在网页模版的<head></head>中插入下面代码: * * <head> * <link rel="StyleSheet" href="dtree.css" type="text/css" /> * <script type="text/javascript" src="dtree.js"></script> * </head> * * 2、在<body></body>中要显示菜单的地方,加入下面代码: * * <body> * <?php * $menus = array( ... ); * $opts = array( ... ); * echo menu($menus, $opts); * ?> * </body> * * @update:2009/08/09 * @author hegz * */ function menu(& $menus, $confOpts = null) { //$opts = array('target', 'folderLinks', 'useSelection', 'useCookies', 'useLines', 'useIcons', 'useStatusText', 'closeSameLevel', 'inOrder'); $output = ''; $output .= "<div class=\"dtree\">\n"; $output .= "<p><a href=\"javascript: d.openAll();\">全部展开</a> | <a href=\"javascript: d.closeAll();\">全部折叠</a></p>\n"; $output .= "<script type=\"text/javascript\">\n"; $output .= "<!--\n\n"; $output .= "d = new dTree('d');\n\n"; /** * 设置 dTree 配置选项值 */ if (isset($confOpts['target'])) { $output .= "d.config.target = {$confOpts['target']};\n"; } else { $output .= "d.config.target = true;\n"; } if (isset($confOpts['folderLinks'])) { $output .= "d.config.folderLinks = {$confOpts['folderLinks']};\n"; } else { $output .= "d.config.folderLinks = true;\n"; } if (isset($confOpts['useSelection'])) { $output .= "d.config.useSelection = {$confOpts['useSelection']};\n"; } else { $output .= "d.config.useSelection = true;\n"; } if (isset($confOpts['useCookies'])) { $output .= "d.config.useCookies = {$confOpts['useCookies']};\n"; } else { $output .= "d.config.useCookies = true;\n"; } if (isset($confOpts['useLines'])) { $output .= "d.config.useLines = {$confOpts['useLines']};\n"; } else { $output .= "d.config.useLines = true;\n"; } if (isset($confOpts['useIcons'])) { $output .= "d.config.useIcons = {$confOpts['useIcons']};\n"; } else { $output .= "d.config.useIcons = true;\n"; } if (isset($confOpts['useStatusText'])) { $output .= "d.config.useStatusText = {$confOpts['useStatusText']};\n"; } else { $output .= "d.config.useStatusText = false;\n"; } if (isset($confOpts['closeSameLevel'])) { $output .= "d.config.closeSameLevel = {$confOpts['closeSameLevel']};\n"; } else { $output .= "d.config.closeSameLevel = false;\n"; } if (isset($confOpts['inOrder'])) { $output .= "d.config.inOrder = {$confOpts['inOrder']};\n"; } else { $output .= "d.config.inOrder = false;\n\n"; } // 添加菜单 foreach ($menus as $menu) { if (!isset($menu['menu_id']) || !isset($menu['parent_id']) || !isset($menu['name'])) { //js_alert('传入的菜单数据项 menu_id、parent_id 或 name 可能不存在。'); echo '传入的菜单数据项 menu_id、parent_id 或 name 可能不存在。'; return false; } if (!isset($menu['url']) && !isset($menu['title']) && !isset($menus['target']) && !isset($menu['icon']) && !isset($menu['iconOpen']) && !isset($menu['open'])) { $output .= "d.add({$menu['menu_id']}, {$menu['parent_id']}, \"{$menu['name']}\");\n"; } else { if (!isset($menu['title']) && !isset($menus['target']) && !isset($menu['icon']) && !isset($menu['iconOpen']) && !isset($menu['open'])) { $output .= "d.add({$menu['menu_id']}, {$menu['parent_id']}, \"{$menu['name']}\", \"{$menu['url']}\");\n"; } else { if (!isset($menus['target']) && !isset($menu['icon']) && !isset($menu['iconOpen']) && !isset($menu['open'])) { if (!isset($menu['url'])) { $menu['url'] = ''; } $output .= "d.add({$menu['menu_id']}, {$menu['parent_id']}, \"{$menu['name']}\", \"{$menu['url']}\", \"{$menu['title']}\");\n"; } else { if (!isset($menu['icon']) && !isset($menu['iconOpen']) && !isset($menu['open'])) { if (!isset($menu['url'])) { $menu['url'] = ''; } if (!isset($menu['title'])) { $menu['title'] = ''; } $output .= "d.add({$menu['menu_id']}, {$menu['parent_id']}, \"{$menu['name']}\", \"{$menu['url']}\", \"{$menu['title']}\", '{$menu['target']}');\n"; } else { if (!isset($menu['iconOpen']) && !isset($menu['open'])) { if (!isset($menu['url'])) { $menu['url'] = ''; } if (!isset($menu['title'])) { $menu['title'] = ''; } if (!isset($menus['target'])) { $menu['target'] = ''; } $output .= "d.add({$menu['menu_id']}, {$menu['parent_id']}, \"{$menu['name']}\", \"{$menu['url']}\", \"{$menu['title']}\", '{$menu['target']}', '{$menu['icon']}');\n"; } else { if (!isset($menu['open'])) { if (!isset($menu['url'])) { $menu['url'] = ''; } if (!isset($menu['title'])) { $menu['title'] = ''; } if (!isset($menus['target'])) { $menu['target'] = ''; } if (!isset($menu['icon'])) { $menu['icon'] = ''; } $output .= "d.add({$menu['menu_id']}, {$menu['parent_id']}, \"{$menu['name']}\", \"{$menu['url']}\", \"{$menu['title']}\", '{$menu['target']}', '{$menu['icon']}', '{$menu['iconOpen']}');\n"; } else { if (!isset($menu['url'])) { $menu['url'] = ''; } if (!isset($menu['title'])) { $menu['title'] = ''; } if (!isset($menus['target'])) { $menu['target'] = ''; } if (!isset($menu['icon'])) { $menu['icon'] = ''; } if (!isset($menu['iconOpen'])) { $menu['iconOpen'] = ''; } $output .= "d.add({$menu['menu_id']}, {$menu['parent_id']}, \"{$menu['name']}\", \"{$menu['url']}\", \"{$menu['title']}\", '{$menu['target']}', '{$menu['icon']}', '{$menu['iconOpen']}', '{$menu['open']}');\n"; } } } } } } } // 创建菜单树 $output .= "\ndocument.write(d);\n\n"; $output .= "//-->\n"; $output .= "</script>\n"; $output .= "</div>\n"; return $output; } ?>
效果图:
参数说明及使用方法如下:
/** * menu -- dTree 树形菜单函数 * * @param array $menus // 菜单数据(数组) * 菜单数据样板: * $menus = array( * array('menu_id' => 0, 'parent_id' => -1, 'name' => '首页'), * array('menu_id' => 1, 'parent_id' => 0, 'name' => 'Node 1'), * array('menu_id' => 2, 'parent_id' => 0, 'name' => 'Node 2', 'url' => 'example01.html'), * array('menu_id' => 3, 'parent_id' => 1, 'name' => 'Node 1.1'), * array('menu_id' => 4, 'parent_id' => 0, 'name' => 'Node 3', 'url' => 'example01.html'), * array('menu_id' => 5, 'parent_id' => 3, 'name' => 'Node 1.1.1'), * array('menu_id' => 6, 'parent_id' => 5, 'name' => 'Node 1.1.1.1', 'url' => 'example01.html'), * array('menu_id' => 7, 'parent_id' => 0, 'name' => 'Node 4', 'url' => 'example01.html'), * array('menu_id' => 8, 'parent_id' => 1, 'name' => 'Node 1.2', 'url' => 'example01.html'), * array('menu_id' => 9, 'parent_id' => 0, 'name' => 'My Pictures', 'title' => 'Pictures I\'ve taken over the years','','','img/imgfolder.gif'), * array('menu_id' => 10, 'parent_id' => 9, 'name' => 'The trip to Iceland', 'url' => 'example01.html', 'title' => 'Pictures of Gullfoss and Geysir'), * array('menu_id' => 11, 'parent_id' => 9, 'name' => 'Mom\'s birthday', 'url' => 'example01.html'), * array('menu_id' => 12, 'parent_id' => 0, 'name' => 'Recycle Bin', 'url' => 'example01.html', 'icon' => 'img/trash.gif'), * ); * menu_id: 表示当前节点的ID * parent_id: 表示当前节点的父节点的ID,根节点的值为 -1 * name: 节点要显示的文字 * url: 节点的Url * title: 鼠标移至该节点时节点的提示文本 * target: 点击节点时,在目标窗口打开链接,可以是 _blank,_parent,_self,_top,甚至 mainFrame * icon: 用做节点关闭时的图标,节点没有指定图标时使用默认值 * iconOpen: 用做节点打开时的图标,节点没有指定图标时使用默认值 * open: 节点的默认打开状态,true打开,false关闭(不过它会读cookie, 所以有时看不出效果) * 说明: menu_id、parent_id、name 三个参数为必需,不能忽略 * * @param array $confOpts // dTree 配置选项参数(数组) * $opts = array( * 'target' => 'true'|string, // 指定所有节点在新窗口中打开链接,默认为 true * 'folderLinks' => 'true', // 文件夹可链接,默认为 true * 'useSelection' => 'true', // 节点被选择时高亮显示,默认为 true * 'useCookies' => 'true', // 用Cookies保存树的当前状态,默认为 true * 'useLines' => 'true', // 创建带线的树,默认为 true * 'useIcons' => 'true', // 创建带有图标的树,默认为 true * 'iconPath' => '' // 设置图标路径,默认为空 * 'useStatusText' => 'false', // 在底部的状态栏中显示节点名还是显示节点的url,默认为 false * 'closeSameLevel' => 'false', // 同级节点树只能展开一个,默认为 false * 'inOrder' => 'false', // 如果父级节点总是添加在子级节点之前,使用这个参数可以加速菜单显示,默认为 false * ); * * @return JavaScript 脚本代码 * * 使用方法: * * 1、在网页模版的<head></head>中插入下面代码: * * <head> * <link rel="StyleSheet" href="dtree.css" type="text/css" /> * <script type="text/javascript" src="dtree.js"></script> * </head> * * 2、在<body></body>中要显示菜单的地方,加入下面代码: * * <body> * <?php * require('dtreemenu.php'); * $menus = array( ... ); * $opts = array( ... ); * echo menu($menus, $opts); * ?> * </body> * * @update:2009/09/6 * @author hegz * */
- dtree.zip (21.4 KB)
- 描述: 内含test.php
- 下载次数: 127
- dtreemenu.zip (2.6 KB)
- 描述: dtree菜单函数文件
- 下载次数: 79
- test.zip (3 KB)
- 描述: 测试文件
- 下载次数: 72
发表评论
-
如何将PHP对象数组转换成普通数组?
2014-03-18 16:54 18990如何将PHP对象数组转换成普通数组? 在利用j ... -
拼音字典
2010-10-25 10:39 1211本人开发系统时用到的汉字转拼音代码: ... -
阿拉伯数字金额转大写人民币
2010-05-23 17:06 1392/** * 阿拉伯数字金额转大写人民币 * 最大 ... -
mb_convert_encoding函数使用方法介绍
2010-04-06 20:23 15438mb_convert_encoding 函数 ... -
中文字符串截取(支持gb2312、gbk、utf-8、big5)
2010-03-30 00:28 1390/* * 中文字符串截取,支持gb2312 ... -
左右值无限分类实现算法
2010-03-30 00:21 2524文章来源:http://bbs.phpchina.co ... -
开发非税代收系统部分功能代码
2010-03-30 00:05 1223将自己开发的功能代码保存在此,一是方便以后重用,二更是为了防防 ... -
自用代码[JSON编解码、日期校验]
2010-03-29 23:48 1586/** * 將数组转换成json格式数据 ...
相关推荐
树形菜单dtree JS实现
dtree是可用有产生树形目录的javascript插件,集实用美观与一体。
自己动手做的一个树形菜单demo,对数据库中不同层次的节点进行分类,实现起来和简单,只需要一个servlet或者struts action,然后再页面使用dtree
改进的多级树形菜单dtree,eclipse开发。mysql数据库,S2SH架构,有源码和jar包。 共两部分。这是第一部分
dtree动态树形菜单,我想大家在做权限管理的时候一定想实现树形菜单,根据自己对应的权限去生成相应的动态树形菜单吧,那就来看看吧!
动态的树形菜单,完整的例子,包含树形菜单中的图标
本工程使用dTree组件实现树形菜单的展示 有静态树形菜单和动态(从数据库获取数据)树形菜单展示两种 数据库连接采用简单的类实现 数据位MySQL(5.0.21),数据库创建脚本为dtree.sql 菜单既有普通的树结构展示,也有...
dtree是一个由JavaScript编写成的简单的树形菜单组件,目前免费并且开源。
改进的多级树形菜单dtree,eclipse开发。mysql数据库,S2SH架构,有源码和jar包。 共两部分。这是第二部分
用JS对象 dTree 生成无限级对象,在页面取得存在Action当中的List,生成动态树形菜单
如何调用dtree里的函数来写树形菜单,最近自己也在写树形菜单,发现这个dtree挺好,推荐下大家如果项目当中使用了树形菜单的话,那么这个就是其中的一个选择。
1、可设置无限级菜单 2、不必使用框架 3、可刷新,多页面内跳转不会影响菜单(IE6下好像有点问题) 4、可限级创造子树 5、支持目前主流浏览器:IE5,6,7,ff 6、节点图片可设置切换图片效果
利用封装的dTree.js文件动态创建树形菜单 使用el表达式
非常好用的dtree控件,用于生成树形菜单,方便控制和提交,包括一个简单的说明
DTree动态展示树形菜单.rar 本工程使用dTree组件实现树形菜单的展示 有静态树形菜单和动态(从数据库获取数据)树形菜单展示两种 数据库连接采用简单的类实现 数据位MySQL(5.0.21),数据库创建脚本为dtree.sql
dtree树形菜单的实现