我将CSS完全分离出来用jQuery附加式样,就是为了多级染色,并且生成目录树和控制式样也很容易,生成时也不需要考虑式样。数据表建议用事先Order排序的方式,不要读取数据的时候才分级排序,这样性能会较佳。 我把它做成了个.Net的控件,作为轻量级的无限目录树,还是相当好用的。只是还不完善,我先慢慢修改,等差不多了再发布出来。 复制代码 代码如下: jQuery 无限级菜单 <BR> #menu a {<BR> color:#fff;<BR> }<BR> #menu div {<BR> /* text-align:center; */<BR> }<BR> #menu div a {<BR> padding-left:20px;<BR> }<BR> #menu div.root {<BR> display:block;<BR> }<BR> .list { background:url(list.gif) no-repeat 6px 6px; }<BR> <BR> $(function(){<BR> //颜色列表,如果想支持无限级,最好自动生成颜色列表,不过我的配色一项很差,用生成的就更惨不忍睹了……<BR> _cor = ['#003366', '#0066CC', '#3399FF', '#990000', '#CC0000', '#FF3300', '#FF9900', '#FFCC66', '#FFFFFF'];<BR> //初始化类<BR> (function Init(i,obj){<BR> i++;<BR> //查找子节点<BR> _obj = obj.children('div');<BR> //若有子节点,则增加一个专有式样<BR> if (_obj.length > 0)<BR> obj.addClass('list');<BR> $.each(_obj, function(j,o){<BR> //若是子目录则隐藏<BR> if (i > 0)<BR> $(o).hide();<BR> //根据目录级数查找颜色字典上背景色,可改为图片什么的。<BR> $(o).css('background-color',_cor[i]);<BR> //查找子目录<BR> Init(i,$(o));<BR> });<BR> })(-1,$('#menu'));<BR> });<BR> //跳转链接<BR> function GotoURL(obj) {<BR> //若链接最末一位不是符号“#”则跳转链接,因为取href得到链接绝对路径,所以只能取最后一位,其实可以传值判断或生成目录树时不产生onclick都是可以的<BR> if (obj.href.substring(obj.href.length - 1, obj.href.length) != "#") return true;<BR> //拉出和缩进的特效<BR> $.each($(obj).parent().children('div'), function(i,o){<BR> $(o).slideToggle('slow');<BR> });<BR> return false;<BR> }<BR> 第一级 第一级 第二级 第二级 第三级 第四级 第四级 第三级 第四级 第四级 第五级 第五级 第五级 第六级 第六级 第二级 第一级 第二级 第二级 第二级 第三级 第四级 第四级 第三级 第四级 第四级 第五级 第五级 第五级 第六级 第六级