PHP+jquery 树状菜单

本项目开发过程中涉及树状菜单,于是做如下分享菜单实现 不足之处请大牛指点并见谅(如图)

1:数据表涉及字段

`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT ‘系统菜单ID‘,
`pid` int(10) DEFAULT NULL COMMENT ‘父级ID‘,
`name` varchar(200) DEFAULT NULL COMMENT ‘菜单名称‘,
`params` varchar(200) DEFAULT NULL COMMENT ‘url参数‘,
`sort` tinyint(4) DEFAULT ‘1‘ COMMENT ‘排序‘,
`status` tinyint(1) DEFAULT ‘1‘ COMMENT ‘菜单状态(1:显示 2:隐藏 3:删除)‘,
`is_system` tinyint(1) DEFAULT ‘0‘ COMMENT ‘是否系统菜单(1:是 0:否)‘,
`level` tinyint(1) unsigned NOT NULL DEFAULT ‘1‘ COMMENT ‘菜单级别‘,

2:html代码

  <volist name="list"  id="item">
                    <tr>
                        <td>{$item.id}</td>
                        <td class="font-bold text-left"><a class="menu_tree" is-load="0" menu-level="{$item.level}" onclick="menu_tree(this,‘close‘)" href="javascript:void(0)" note-id="{$item.id}" ><i class="glyph-icon icon-plus"></i> {$item.name}</a> </td>
                        <td>{$item.controller}</td>
                        <td>{$item.action}</td>
                        <td>{$item.params}</td>
                        <td>{$item.level}</td>
                        <td>{$item.sort}</td>
                        <td><if condition="$item[‘status‘] eq 1">显示<elseif condition="$item[‘status‘] eq 2"  />隐藏<else />删除</if></td>
                    <td>
                        <a title=""  href="#" data-placement="top" class="btn medium ui-state-default" data-original-title="Edit">
                            <span class="glyph-icon icon-edit button-content editMenuLayer" data-id="{$item.id}">编辑</span>
                        </a>
                        <a title="" data-id="{$item.id}"  data-placement="top" class="btn small bg-white tooltip-button menuDelete"  href="#" data-original-title="Remove">
                            <span class="glyph-icon icon-remove " ></span>删除
                        </a>
                    </td>
                    </tr> 

                </volist>

3:加载html

<volist name="list"  id="item">  

                   <tr class="sub_menu{$item[‘level‘]}">
                        <td>{$item.id}</td>
                        <td class="font-bold text-left">
                            <php>
                              //空格
                             $space="";
                             for($i=0;$i<($item[‘level‘]-1)*2;$i++){
                             $space .="&nbsp;&nbsp;";
                             }
                             echo $space;
                            </php>
                           <a class="menu_tree" menu-level="{$item.level}" onclick="menu_tree(this,‘close‘)" href="javascript:void(0)" is-load="0" note-id="{$item.id}" ><i class="glyph-icon icon-plus"></i> {$item.name}</a> </td>
                        <td>{$item.controller}</td>
                        <td>{$item.action}</td>
                        <td>{$item.params}</td>
                        <td>{$item.level}</td>
                        <td>{$item.sort}</td>
                        <td><if condition="$item[‘status‘] eq 1">显示<elseif condition="$item[‘status‘] eq 2"  />隐藏<else />删除</if></td>
                    <td>
                        <a title=""  href="#" data-placement="top" class="btn medium ui-state-default" data-original-title="Edit">
                            <span class="glyph-icon icon-edit button-content editMenuLayer" data-id="{$item.id}">编辑</span>
                        </a>
                        <a title="" data-id="{$item.id}"  data-placement="top" class="btn small bg-white tooltip-button menuDelete"  href="#" data-original-title="Remove">
                            <span class="glyph-icon icon-remove " ></span>删除
                        </a>
                    </td>
                    </tr>
            </volist>

4:js代码

 <script>
        //树状菜单
       function menu_tree(a,type){
            var note_id = $(a).attr(‘note-id‘);
            var is_load = $(a).attr(‘is-load‘);
            var level = $(a).attr(‘menu-level‘);
           if(type=="close"){
var url="{:U(‘Menu/sub_menu‘)}"
               //是否已经加载
               if(is_load!=1){
                    $.post(url,{id:note_id},function(data){
                      if(data.status==1){                         $(a).attr(‘onclick‘,"menu_tree(this,‘open‘)");                        $(a).children(‘i‘).removeClass(‘icon-plus‘);                       $(a).children(‘i‘).addClass("icon-minus");
                          $(a).attr(‘is-load‘,1);
                          $(a).parent(‘td‘).parent(‘tr‘).after(data.info);
                      }
                    },‘json‘);
               }else{$(a).attr(‘onclick‘,"menu_tree(this,‘open‘)"); $(a).children(‘i‘).removeClass(‘icon-plus‘); $(a).children(‘i‘).addClass("icon-minus");
                    //显示下级
                    $(a).parent(‘td‘).parent(‘tr‘).nextUntil(‘.sub_menu‘+level+‘‘).show();
               }
            }else{
                //隐藏下级
                $(a).parent(‘td‘).parent(‘tr‘).nextUntil(‘.sub_menu‘+level+‘‘).hide();
                $(a).children(‘i‘).removeClass(‘icon-minus‘);
                $(a).children(‘i‘).addClass("icon-plus");
                $(a).attr(‘onclick‘,"menu_tree(this,‘close‘)");
            }
        }
    </script>
时间: 2024-08-25 00:46:27

PHP+jquery 树状菜单的相关文章

js, 树状菜单隐藏显示

js写的不是很严谨~~~嘿嘿 ? <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <style> #ul_tree ul { ????display: none; } ? </style> <title>树状菜单</title> </head> <body> ? <ul id="ul_tree&

纯CSS打造可折叠树状菜单

1:Html代码 <li> <label for="subsubfolder1">下级</label> <input id="subsubfolder1" type="checkbox" /> <ol> <li class="file"><a>下级</a></li> <li> <label for=&q

由简入繁实现Jquery树状结构

在项目中,我们经常会需要一些树状结构的样式来显示层级结构等,比如下图的样式,之前在学.net的时候可以直接拖个服务端控件过来直接使用非常方便.但是利用Jquery的一些插件,也是可以实现这些效果的,比如说Jquery.treeview.js插件. 下面就直入主题,开始从简入繁的分析怎么使用treeview插件,从已知的知识开始轻松入手,让树状结构唾手可得. 显示树状结构的几个实现步骤: 一.HTML做初始静态原型. 首先通过<ul></ul><li></li>

javascript树状菜单

应用页面 <html> <head> <title>category tree</title> <link rel="StyleSheet" href="css/dtree.css" type="text/css" /> <script type="text/javascript" src="script/dtree.js"></

前端树状菜单

因为突然间用到这个东西,但是也不清楚别人是怎么做的,就自己根据自己的想法来了,效果还不错. 先思路,后代码: 思路:两个ul嵌套,把外层的ul显示出来,里层的ul先用样式表隐藏,当点击的时候,当前li下的ul状态更改为显示,就可以了 当点击其他的时候,先把外层li下所有的ul样式全为隐藏,然后再显示当前下的ul,大体思路就是这样 代码: <html><head>    <meta charset="UTF-8">    <title>Do

前端的小玩意.删除.折叠.最大化.拖拽布局.树状菜单

以上是整体布局 添加Remove方法 Array.prototype.indexOf = function (val) { for (var i = 0; i < this.length; i++) { if (this[i] == val) return i; } return -1; }; Array.prototype.remove = function (val) { var index = this.indexOf(val); if (index > -1) { this.splic

五中常用简洁后台导航菜单(一级导航,二级导航,手风琴式导航,左或右悬浮式导航,树状导航)

首先附上源码,可以下载! http://yunpan.cn/cd9ivPcL4ayQT (提取码:d8a5) 在建立导航菜单的时候,我们首先布局一个(" 头"+[左,右(自适应)]+”尾“)的HTML页面: 来看一下HTML页面的编写: <div id="container"> <div id="head"></div> <div id="mainContent"> <di

Java Swing编程之仿js树状折叠菜单

最近要完成一个需求:用swing做个树状菜单,含二级菜单,点击一级菜单展开二级菜单,且二级菜单数目超过预览视图会出现滚动条.由于swing研究的少,花了不少精力! 先看下测试效果图: 收起图: 展开图: 完整源码: 1 package com.xuwei.test2; 2 3 import java.awt.BorderLayout; 4 import java.awt.Color; 5 import java.awt.GridLayout; 6 import java.awt.event.Ac

树状目录+无穷阶层

平时看到数据库动态产生阶层菜单,产生方式有下方两项: 使用TreeView + xml产生 使用 ul 与 li ,运用递归的逻辑:搭配CSS+JavaScript 来设计 最近学到的这个阶层菜单写法,运用上比较简单,以下开始说明做法 前言: 第一篇程序文章终于生出来了. 平时看到的数据库动态产生阶层菜单,产生方式有下方两项: 使用TreeView + xml产生 使用 与 ,运用递归的逻辑:搭配CSS+JavaScript 来设计 可以参考 91大的?MenuMatic + [ASP.NET]