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 相关文章推荐
javascript判断非数字的简单例子
Jul 18 Javascript
使用JavaScript实现Java的List功能(实例讲解)
Nov 07 Javascript
在jQuery中处理XML数据的大致方法
Aug 14 Javascript
Bootstrap每天必学之标签页(Tab)插件
Aug 09 Javascript
JavaScript Ajax编程 应用篇
Jul 02 Javascript
基于JavaScript Array数组方法(新手必看篇)
Aug 20 Javascript
jquery 实现回车登录详解及实例代码
Oct 23 Javascript
对vue2.0中.vue文件页面跳转之.$router.push的用法详解
Aug 24 Javascript
详解Eslint 配置及规则说明
Sep 10 Javascript
Vue自定义指令写法与个人理解
Feb 09 Javascript
JS使用队列对数组排列,基数排序算法示例
Mar 02 Javascript
vue.js的状态管理vuex中store的使用详解
Nov 08 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 数组遍历顺序理解
2009/09/09 PHP
基于PHP5魔术常量与魔术方法的详解
2013/06/13 PHP
PHP图片自动裁切应付不同尺寸的显示
2014/10/16 PHP
php导入excel文件到mysql数据库的方法
2015/01/14 PHP
PHP微信公众号自动发送红包API
2016/06/01 PHP
javascript 控制弹出窗口
2007/04/10 Javascript
JQuery筛选器全系列介绍
2013/08/27 Javascript
使用javascript实现页面定时跳转总结篇
2013/09/21 Javascript
让javascript加载速度倍增的方法(解决JS加载速度慢的问题)
2014/12/12 Javascript
JavaScript使用indexOf获得子字符串在字符串中位置的方法
2015/04/06 Javascript
jquery马赛克拼接翻转效果代码分享
2015/08/24 Javascript
快速解决jquery.touchSwipe左右滑动和垂直滚动条冲突
2016/04/15 Javascript
jQuery实现点击按钮文字变成input框点击保存变成文字
2016/05/09 Javascript
bootstrap datetimepicker实现秒钟选择下拉框
2017/01/05 Javascript
js实现tab切换效果
2017/02/16 Javascript
react开发中如何使用require.ensure加载es6风格的组件
2017/05/09 Javascript
基于vue写一个全局Message组件的实现
2019/08/15 Javascript
微信小程序云开发获取文件夹下所有文件(推荐)
2019/11/14 Javascript
浅谈vant组件Picker 选择器选单选问题
2020/11/04 Javascript
Python中logging模块的用法实例
2014/09/29 Python
python通过shutil实现快速文件复制的方法
2015/03/14 Python
Python利用Beautiful Soup模块搜索内容详解
2017/03/29 Python
python使用PIL模块获取图片像素点的方法
2019/01/08 Python
python下载微信公众号相关文章
2019/02/26 Python
学习python分支结构
2019/05/17 Python
Python 矩阵转置的几种方法小结
2019/12/02 Python
Django models filter筛选条件详解
2020/03/16 Python
使用keras2.0 将Merge层改为函数式
2020/05/23 Python
python3检查字典传入函数键是否齐全的实例
2020/06/05 Python
香蕉共和国加拿大官网:Banana Republic加拿大
2018/08/06 全球购物
The Kooples美国官方网站:为情侣提供的法国当代时尚品牌
2019/01/03 全球购物
计算机专业个人求职自荐信
2013/09/21 职场文书
《李广射虎》教学反思
2014/04/27 职场文书
保管员岗位职责
2015/02/14 职场文书
2015年乡镇纪检工作总结
2015/04/22 职场文书
2016年社区六一儿童节活动总结
2016/04/06 职场文书