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判断IE浏览器版本过低示例代码
Nov 22 Javascript
js 赋值包含单引号双引号问题的解决方法
Feb 26 Javascript
使用js画图之正弦曲线
Jan 12 Javascript
jquery实现标签上移、下移、置顶
Apr 26 Javascript
jQuery实现冻结表格行和列
Apr 29 Javascript
jQuery实现鼠标划过添加和删除class的方法
Jun 26 Javascript
bootstrap模态框垂直居中效果
Dec 03 Javascript
jQuery实现动态生成表格并为行绑定单击变色动作的方法
Apr 17 jQuery
jquery实现放大镜简洁代码(推荐)
Jun 08 jQuery
node.js中process进程的概念和child_process子进程模块的使用方法示例
Feb 11 Javascript
关于JavaScript数组去重的一些理解汇总
Sep 10 Javascript
vue使用节流函数的踩坑实例指南
May 20 Vue.js
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 fputcsv命令 写csv文件遇到的小问题(多维数组连接符)
2011/05/24 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
PHP中soap用法示例【SoapServer服务端与SoapClient客户端编写】
2018/12/25 PHP
JavaScript 学习技巧
2010/02/17 Javascript
JavaScript获取页面上某个元素的代码
2011/03/13 Javascript
CSS+jQuery实现的一个放大缩小动画效果
2013/09/24 Javascript
js 跳出页面的frameset框架示例介绍
2013/12/23 Javascript
JavaScript中原型和原型链详解
2015/02/11 Javascript
被遗忘的javascript的slice() 方法
2015/04/20 Javascript
js实现商城星星评分的效果
2015/12/29 Javascript
AngularJS基础 ng-if 指令用法
2016/08/01 Javascript
js实现无缝循环滚动
2020/06/23 Javascript
jQuery Ajax前后端使用JSON进行交互示例
2017/03/17 Javascript
手把手带你封装一个vue component第三方库
2019/02/14 Javascript
详解微信小程序用定时器实现倒计时效果
2019/04/30 Javascript
微信小程序 云开发模糊查询实现解析
2019/09/02 Javascript
11个Javascript小技巧帮你提升代码质量(小结)
2020/12/28 Javascript
javascript代码实现简易计算器
2021/01/25 Javascript
使用IPython下的Net-SNMP来管理类UNIX系统的教程
2015/04/15 Python
Django 实现下载文件功能的示例
2018/03/06 Python
python实现图书馆研习室自动预约功能
2018/04/27 Python
python在TXT文件中按照某一字符串取出该字符串所在的行方法
2018/12/10 Python
解决python中导入win32com.client出错的问题
2019/07/26 Python
Python 音频生成器的实现示例
2019/12/24 Python
详解python tkinter模块安装过程
2020/01/06 Python
新手学习Python2和Python3中print不同的用法
2020/06/09 Python
Python sklearn中的.fit与.predict的用法说明
2020/06/28 Python
Python:__eq__和__str__函数的使用示例
2020/09/26 Python
汽车销售求职自荐信
2013/10/01 职场文书
连锁酒店店长职责范本
2014/02/13 职场文书
清扬洗发水广告词
2014/03/14 职场文书
网吧员工管理制度
2015/08/05 职场文书
校园广播稿范文
2015/08/19 职场文书
MySQL连接控制插件介绍
2021/09/25 MySQL
Python Pandas 删除列操作
2022/03/16 Python
MySQL实现字段分割一行转多行的示例代码
2022/07/07 MySQL