jQuery 无限级菜单的简单实例


Posted in Javascript onFebruary 21, 2014

我将CSS完全分离出来用jQuery附加式样,就是为了多级染色,并且生成目录树和控制式样也很容易,生成时也不需要考虑式样。数据表建议用事先Order排序的方式,不要读取数据的时候才分级排序,这样性能会较佳。

我把它做成了个.Net的控件,作为轻量级的无限目录树,还是相当好用的。只是还不完善,我先慢慢修改,等差不多了再发布出来。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>jQuery 无限级菜单</title>
    <style type="text/css">
    #menu a {
        color:#fff;
    }
    #menu div {
        /* text-align:center; */
    }
    #menu div a {
        padding-left:20px;
    }
    #menu div.root {
        display:block;
    }
    .list { background:url(list.gif) no-repeat 6px 6px; }
    </style>
    <script type="text/javascript" language="javascript" src="jquery-1.2.3.min.js"></script>
    <script type="text/javascript" language="javascript">
    $(function(){
        //颜色列表,如果想支持无限级,最好自动生成颜色列表,不过我的配色一项很差,用生成的就更惨不忍睹了……
        _cor = ['#003366', '#0066CC', '#3399FF', '#990000', '#CC0000', '#FF3300', '#FF9900', '#FFCC66', '#FFFFFF'];
        //初始化类
        (function Init(i,obj){
            i++;
            //查找子节点
            _obj = obj.children('div');
            //若有子节点,则增加一个专有式样
            if (_obj.length > 0)
                obj.addClass('list');
            $.each(_obj, function(j,o){
                //若是子目录则隐藏
                if (i > 0)
                    $(o).hide();
                //根据目录级数查找颜色字典上背景色,可改为图片什么的。
                $(o).css('background-color',_cor[i]);
                //查找子目录
                Init(i,$(o));
            });
        })(-1,$('#menu'));
    });
    //跳转链接
    function GotoURL(obj) {
        //若链接最末一位不是符号“#”则跳转链接,因为取href得到链接绝对路径,所以只能取最后一位,其实可以传值判断或生成目录树时不产生onclick都是可以的
        if (obj.href.substring(obj.href.length - 1, obj.href.length) != "#") return true;
        //拉出和缩进的特效
        $.each($(obj).parent().children('div'), function(i,o){
            $(o).slideToggle('slow');
        });
        return false;
    }
    </script>
</head>
<body>
    <div id="menu">
        <div> <a href="#" onclick="return GotoURL(this)">第一级</a> </div>
        <div> <a href="#" onclick="return GotoURL(this)">第一级</a>
            <div> <a href="#" onclick="return GotoURL(this)">第二级</a> </div>
            <div> <a href="#" onclick="return GotoURL(this)">第二级</a>
                <div> <a href="#" onclick="return GotoURL(this)">第三级</a>
                    <div> <a href="#" onclick="return GotoURL(this)">第四级</a> </div>
                    <div> <a href="#" onclick="return GotoURL(this)">第四级</a> </div>
                </div>
                <div> <a href="#" onclick="return GotoURL(this)">第三级</a>
                    <div> <a href="#" onclick="return GotoURL(this)">第四级</a> </div>
                    <div> <a href="#" onclick="return GotoURL(this)">第四级</a>
                        <div> <a href="#" onclick="return GotoURL(this)">第五级</a> </div>
                        <div> <a href="#" onclick="return GotoURL(this)">第五级</a> </div>
                        <div> <a href="#" onclick="return GotoURL(this)">第五级</a>
                            <div> <a href="#" onclick="return GotoURL(this)">第六级</a> </div>
                            <div> <a href="#" onclick="return GotoURL(this)">第六级</a> </div>
                        </div>
                    </div>
                </div>
            </div>
            <div> <a href="#" onclick="return GotoURL(this)">第二级</a> </div>
        </div>
        <div> <a href="#" onclick="return GotoURL(this)">第一级</a>
            <div> <a href="#" onclick="return GotoURL(this)">第二级</a> </div>
            <div> <a href="#" onclick="return GotoURL(this)">第二级</a> </div>
            <div> <a href="#" onclick="return GotoURL(this)">第二级</a>
                <div> <a href="#" onclick="return GotoURL(this)">第三级</a>
                    <div> <a href="#" onclick="return GotoURL(this)">第四级</a> </div>
                    <div> <a href="#" onclick="return GotoURL(this)">第四级</a> </div>
                </div>
                <div> <a href="#" onclick="return GotoURL(this)">第三级</a>
                    <div> <a href="#" onclick="return GotoURL(this)">第四级</a> </div>
                    <div> <a href="#" onclick="return GotoURL(this)">第四级</a>
                        <div> <a href="#" onclick="return GotoURL(this)">第五级</a> </div>
                        <div> <a href="#" onclick="return GotoURL(this)">第五级</a> </div>
                        <div> <a href="#" onclick="return GotoURL(this)">第五级</a>
                            <div> <a href="#" onclick="return GotoURL(this)">第六级</a> </div>
                            <div> <a href="#" onclick="return GotoURL(this)">第六级</a> </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>
Javascript 相关文章推荐
JS实现为表格动态添加标题的方法
Mar 31 Javascript
jQuery实现html元素拖拽
Jul 21 Javascript
JS实现单击输入框弹出选择框效果完整实例
Dec 14 Javascript
JS Array创建及concat()split()slice()的使用方法
Jun 03 Javascript
JavaScript闭包_动力节点Java学院整理
Jun 27 Javascript
基于JavaScript实现弹幕特效
Aug 27 Javascript
jQuery 中msgTips 顶部弹窗效果实现代码
Aug 14 jQuery
小程序扫描普通链接二维码跳转小程序指定界面方法
May 07 Javascript
Layui 数据表格批量删除和多条件搜索的实例
Sep 04 Javascript
微信小程序实现一张或多张图片上传(云开发)
Sep 25 Javascript
JavaScript使用canvas绘制随机验证码
Feb 17 Javascript
微信小程序地图实现展示线路
Jul 29 Javascript
js控制table合并具体实现
Feb 20 #Javascript
js文件Cookie存取值示例代码
Feb 20 #Javascript
js中array的sort()方法使用介绍
Feb 20 #Javascript
javascript生成随机大小写字母的方法
Feb 20 #Javascript
将json对象转换为字符串的方法
Feb 20 #Javascript
javascript实现json页面分页实例代码
Feb 20 #Javascript
Jquery中的层次选择器与find()的区别示例介绍
Feb 20 #Javascript
You might like
超小PHP小马小结(方便查找后门的朋友)
2012/05/05 PHP
PHP实现文件下载断点续传详解
2014/10/15 PHP
mysql_connect localhost和127.0.0.1的区别(网络层阐述)
2015/03/26 PHP
PHP常见数组函数用法小结
2016/03/21 PHP
Yii2框架自定义验证规则操作示例
2019/02/08 PHP
javascript中String类的subString()方法和slice()方法
2011/05/24 Javascript
jQuery 源码分析笔记(6) jQuery.data
2011/06/08 Javascript
js打开新窗口方法整理
2014/02/17 Javascript
Javascript基础教程之数据类型 (数值 Number)
2015/01/18 Javascript
require.js的用法详解
2015/10/20 Javascript
全面解析Bootstrap表单使用方法(表单控件)
2015/11/24 Javascript
浅析angularJS中的ui-router和ng-grid模块
2016/05/20 Javascript
JS+DIV实现的卷帘效果示例
2017/03/22 Javascript
win系统下nodejs环境安装配置
2017/05/04 NodeJs
微信小程序 页面跳转事件绑定的实例详解
2017/09/20 Javascript
Vue数据双向绑定原理及简单实现方法
2018/05/18 Javascript
Angular ElementRef简介及其使用
2018/10/01 Javascript
基于Webpack4和React hooks搭建项目的方法
2019/02/05 Javascript
详解easyui 切换主题皮肤
2019/04/04 Javascript
JavaScript Event Loop相关原理解析
2020/06/10 Javascript
javascript读取本地文件和目录方法详解
2020/08/06 Javascript
放弃 Python 转向 Go语言有人给出了 9 大理由
2017/10/20 Python
查看django版本的方法分享
2018/05/14 Python
Python动态语言与鸭子类型详解
2019/07/01 Python
python 函数中的内置函数及用法详解
2019/07/02 Python
Python DataFrame一列拆成多列以及一行拆成多行
2019/08/06 Python
将labelme格式数据转化为标准的coco数据集格式方式
2020/02/17 Python
Python爬虫爬取百度搜索内容代码实例
2020/06/05 Python
python zip()函数的使用示例
2020/09/23 Python
html5 web本地存储将取代我们的cookie
2012/12/26 HTML / CSS
Otticanet美国:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/03/10 全球购物
新浪网技术部笔试题
2016/08/26 面试题
公司行政专员岗位职责
2014/08/24 职场文书
市场部经理岗位职责
2015/02/02 职场文书
企业内部管理控制:采购授权审批制度范本
2020/01/19 职场文书
解决mysql:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO/YES)
2021/06/26 MySQL