1、left.html 页面内容 
 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
 2 <html>
<html> 
 3 <head>
<head> 
 4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
 5 <title>后台管理系统</title>
<title>后台管理系统</title> 
 6 <link rel="stylesheet" type="text/css" href="css/style.css">
<link rel="stylesheet" type="text/css" href="css/style.css"> 
 7 <script src="js/jquery.js" type="text/javascript"></script>
<script src="js/jquery.js" type="text/javascript"></script> 
 8 <script src="js/jquery.treeview.js" type="text/javascript"></script>
<script src="js/jquery.treeview.js" type="text/javascript"></script> 
 9
 <script type="text/javascript">
<script type="text/javascript"> 
 
10
 $(document).ready(function()
  $(document).ready(function() {
{ 
11 $("#wenzhang>dd>dl>dd").hide();
       $("#wenzhang>dd>dl>dd").hide(); 
12
 $.each($("#wenzhang>dd>dl>dt"), function()
     $.each($("#wenzhang>dd>dl>dt"), function() {
{ 
13
 $(this).click(function()
$(this).click(function() {
{ 
14 $("#wenzhang>dd>dl>dd ").not($(this).next()).slideUp();
$("#wenzhang>dd>dl>dd ").not($(this).next()).slideUp(); 
15 $(this).next().slideToggle(500);
$(this).next().slideToggle(500); 
16 });
}); 
17 });
}); 
18 });
  }); 
19 
  
20
 function goSpace(obj)
  function goSpace(obj) {
{ 
21 window.parent.main.location.href=obj;
window.parent.main.location.href=obj;   
22 }
} 
23 </script>
</script> 
24
25
26 </head>
</head> 
27 <body>
<body> 
28 <dl id="wenzhang">
<dl id="wenzhang"> 
29 <dd>
        <dd> 
30 <dl>
        <dl> 
31 <dt>权限系统</dt>
           <dt>权限系统</dt> 
32 <dd>
           <dd> 
33 <ul>
             <ul> 
34 <li><a href="javascript:goSpace('queryOrgType.html')">机构类型管理</a></li>
             <li><a href="javascript:goSpace('queryOrgType.html')">机构类型管理</a></li> 
35 <li><a href="javascript:goSpace('queryOrg.html')">机构岗位管理</a></li>
                <li><a href="javascript:goSpace('queryOrg.html')">机构岗位管理</a></li> 
36 <li>用户管理</li>
                <li>用户管理</li> 
37 <li>角色管理</li>
                <li>角色管理</li> 
38 <li>菜单管理</li>
                <li>菜单管理</li> 
39 <li>数据字典</li>
                <li>数据字典</li> 
40 </ul>
             </ul> 
41 </dd>
           </dd> 
42 
           
43 </dl>
        </dl> 
44 </dd>
        </dd> 
45 <dd>
        <dd> 
46 <dl>
        <dl> 
47 <dt>系统设置</dt>
           <dt>系统设置</dt> 
48 <dd>
           <dd> 
49 <ul>
              <ul> 
50 <li>test1</li>
                <li>test1</li> 
51 <li>test1</li>
                <li>test1</li> 
52 <li>test1</li>
                <li>test1</li> 
53 <li>test1</li>
                <li>test1</li> 
54 </ul>
              </ul> 
55 </dd>
           </dd> 
56 </dl>
        </dl> 
57 </dd>
        </dd> 
58 <dd>
        <dd> 
59 <dl>
        <dl> 
60 <dt>我的工作</dt>
           <dt>我的工作</dt> 
61 <dd>
           <dd> 
62 <ul>
              <ul> 
63 <li>work</li>
                 <li>work</li> 
64 <li>work</li>
                 <li>work</li> 
65 <li>work</li>
                 <li>work</li> 
66 <li>work</li>
                 <li>work</li> 
67 </ul>
              </ul> 
68 </dd>
           </dd> 
69 </dl>
        </dl> 
70 </dd>
        </dd> 
71 </dl>
    </dl> 
72 </body>
</body> 
73 </html>
</html>  
2、jquery.js 自己在jquery官方网站上下载,笔者采用的是1.4.2的版本 
3、jquery.treeview.js 的内容如下 
  1
 ;(function($)
;(function($)  {
{ 
  2
  3
 $.extend($.fn,
$.extend($.fn,  {
{ 
  4
 swapClass: function(c1, c2)
swapClass: function(c1, c2)  {
{ 
  5 var c1Elements = this.filter('.' + c1);
var c1Elements = this.filter('.' + c1); 
  6 this.filter('.' + c2).removeClass(c2).addClass(c1);
this.filter('.' + c2).removeClass(c2).addClass(c1); 
  7 c1Elements.removeClass(c1).addClass(c2);
c1Elements.removeClass(c1).addClass(c2); 
  8 return this;
return this; 
  9 },
}, 
 10
 replaceClass: function(c1, c2)
replaceClass: function(c1, c2)  {
{ 
 11 return this.filter('.' + c1).removeClass(c1).addClass(c2).end();
return this.filter('.' + c1).removeClass(c1).addClass(c2).end(); 
 12 },
}, 
 13
 hoverClass: function(className)
hoverClass: function(className)  {
{ 
 14 className = className || "hover";
className = className || "hover"; 
 15
 return this.hover(function()
return this.hover(function()  {
{ 
 16 $(this).addClass(className);
$(this).addClass(className); 
 17
 }, function()
}, function()  {
{ 
 18 $(this).removeClass(className);
$(this).removeClass(className); 
 19 });
}); 
 20 },
}, 
 21
 heightToggle: function(animated, callback)
heightToggle: function(animated, callback)  {
{ 
 22 animated ?
animated ? 
 23
 this.animate(
this.animate( { height: "toggle" }, animated, callback) :
{ height: "toggle" }, animated, callback) : 
 24
 this.each(function()
this.each(function() {
{ 
 25 jQuery(this)[ jQuery(this).is(":hidden") ? "show" : "hide" ]();
jQuery(this)[ jQuery(this).is(":hidden") ? "show" : "hide" ](); 
 26 if(callback)
if(callback) 
 27 callback.apply(this, arguments);
callback.apply(this, arguments); 
 28 });
}); 
 29 },
}, 
 30
 heightHide: function(animated, callback)
heightHide: function(animated, callback)  {
{ 
 31
 if (animated)
if (animated)  {
{ 
 32
 this.animate(
this.animate( { height: "hide" }, animated, callback);
{ height: "hide" }, animated, callback); 
 33
 } else
} else  {
{ 
 34 this.hide();
this.hide(); 
 35 if (callback)
if (callback) 
 36 this.each(callback);
this.each(callback); 
 37 }
} 
 38 },
}, 
 39
 prepareBranches: function(settings)
prepareBranches: function(settings)  {
{ 
 40
 if (!settings.prerendered)
if (!settings.prerendered)  {
{ 
 41 // mark last tree items
// mark last tree items 
 42 this.filter(":last-child:not(ul)").addClass(CLASSES.last);
this.filter(":last-child:not(ul)").addClass(CLASSES.last); 
 43 // collapse whole tree, or only those marked as closed, anyway except those marked as open
// collapse whole tree, or only those marked as closed, anyway except those marked as open 
 44 this.filter((settings.collapsed ? "" : "." + CLASSES.closed) + ":not(." + CLASSES.open + ")").find(">ul").hide();
this.filter((settings.collapsed ? "" : "." + CLASSES.closed) + ":not(." + CLASSES.open + ")").find(">ul").hide(); 
 45 }
} 
 46 // return all items with sublists
// return all items with sublists 
 47 return this.filter(":has(>ul)");
return this.filter(":has(>ul)"); 
 48 },
}, 
 49
 applyClasses: function(settings, toggler)
applyClasses: function(settings, toggler)  {
{ 
 50
 this.filter(":has(>ul):not(:has(>a))").find(">span").click(function(event)
this.filter(":has(>ul):not(:has(>a))").find(">span").click(function(event)  {
{ 
 51 toggler.apply($(this).next());
toggler.apply($(this).next()); 
 52 }).add( $("a", this) ).hoverClass();
}).add( $("a", this) ).hoverClass(); 
 53
 54
 if (!settings.prerendered)
if (!settings.prerendered)  {
{ 
 55 // handle closed ones first
// handle closed ones first 
 56 this.filter(":has(>ul:hidden)")
this.filter(":has(>ul:hidden)") 
 57 .addClass(CLASSES.expandable)
.addClass(CLASSES.expandable) 
 58 .replaceClass(CLASSES.last, CLASSES.lastExpandable);
.replaceClass(CLASSES.last, CLASSES.lastExpandable); 
 59
 60 // handle open ones
// handle open ones 
 61 this.not(":has(>ul:hidden)")
this.not(":has(>ul:hidden)") 
 62 .addClass(CLASSES.collapsable)
.addClass(CLASSES.collapsable) 
 63 .replaceClass(CLASSES.last, CLASSES.lastCollapsable);
.replaceClass(CLASSES.last, CLASSES.lastCollapsable); 
 64
 65 // create hitarea
            // create hitarea 
 66
 this.prepend("<div class=\"" + CLASSES.hitarea + "\"/>").find("div." + CLASSES.hitarea).each(function()
this.prepend("<div class=\"" + CLASSES.hitarea + "\"/>").find("div." + CLASSES.hitarea).each(function()  {
{ 
 67 var classes = "";
var classes = ""; 
 68
 $.each($(this).parent().attr("class").split(" "), function()
$.each($(this).parent().attr("class").split(" "), function()  {
{ 
 69 classes += this + "-hitarea ";
classes += this + "-hitarea "; 
 70 });
}); 
 71 $(this).addClass( classes );
$(this).addClass( classes ); 
 72 });
}); 
 73 }
} 
 74
 75 // apply event to hitarea
// apply event to hitarea 
 76 this.find("div." + CLASSES.hitarea).click( toggler );
this.find("div." + CLASSES.hitarea).click( toggler ); 
 77 },
}, 
 78
 treeview: function(settings)
treeview: function(settings)  {
{ 
 79
 80
 settings = $.extend(
settings = $.extend( {
{ 
 81 cookieId: "treeview"
cookieId: "treeview" 
 82 }, settings);
}, settings); 
 83
 84
 if (settings.add)
if (settings.add)  {
{ 
 85 return this.trigger("add", [settings.add]);
return this.trigger("add", [settings.add]); 
 86 }
} 
 87
 88
 if ( settings.toggle )
if ( settings.toggle )  {
{ 
 89 var callback = settings.toggle;
var callback = settings.toggle; 
 90
 settings.toggle = function()
settings.toggle = function()  {
{ 
 91 return callback.apply($(this).parent()[0], arguments);
return callback.apply($(this).parent()[0], arguments); 
 92 };
}; 
 93 }
} 
 94
 95 // factory for treecontroller
// factory for treecontroller 
 96
 function treeController(tree, control)
function treeController(tree, control)  {
{ 
 97 // factory for click handlers
// factory for click handlers 
 98
 function handler(filter)
function handler(filter)  {
{ 
 99
 return function()
return function()  {
{ 
100 // reuse toggle event handler, applying the elements to toggle
// reuse toggle event handler, applying the elements to toggle 
101 // start searching for all hitareas
// start searching for all hitareas 
102
 toggler.apply( $("div." + CLASSES.hitarea, tree).filter(function()
toggler.apply( $("div." + CLASSES.hitarea, tree).filter(function()  {
{ 
103 // for plain toggle, no filter is provided, otherwise we need to check the parent element
// for plain toggle, no filter is provided, otherwise we need to check the parent element 
104 return filter ? $(this).parent("." + filter).length : true;
return filter ? $(this).parent("." + filter).length : true; 
105 }) );
}) ); 
106 return false;
return false; 
107 };
}; 
108 }
} 
109 // click on first element to collapse tree
// click on first element to collapse tree 
110 $("a:eq(0)", control).click( handler(CLASSES.collapsable) );
$("a:eq(0)", control).click( handler(CLASSES.collapsable) ); 
111 // click on second to expand tree
// click on second to expand tree 
112 $("a:eq(1)", control).click( handler(CLASSES.expandable) );
$("a:eq(1)", control).click( handler(CLASSES.expandable) ); 
113 // click on third to toggle tree
// click on third to toggle tree 
114 $("a:eq(2)", control).click( handler() );
$("a:eq(2)", control).click( handler() ); 
115 }
} 
116
117 // handle toggle event
// handle toggle event 
118
 function toggler()
function toggler()  {
{ 
119 $(this)
$(this) 
120 .parent()
.parent() 
121 // swap classes for hitarea
// swap classes for hitarea 
122 .find(">.hitarea")
.find(">.hitarea") 
123 .swapClass( CLASSES.collapsableHitarea, CLASSES.expandableHitarea )
.swapClass( CLASSES.collapsableHitarea, CLASSES.expandableHitarea ) 
124 .swapClass( CLASSES.lastCollapsableHitarea, CLASSES.lastExpandableHitarea )
.swapClass( CLASSES.lastCollapsableHitarea, CLASSES.lastExpandableHitarea ) 
125 .end()
.end() 
126 // swap classes for parent li
// swap classes for parent li 
127 .swapClass( CLASSES.collapsable, CLASSES.expandable )
.swapClass( CLASSES.collapsable, CLASSES.expandable ) 
128 .swapClass( CLASSES.lastCollapsable, CLASSES.lastExpandable )
.swapClass( CLASSES.lastCollapsable, CLASSES.lastExpandable ) 
129 // find child lists
// find child lists 
130 .find( ">ul" )
.find( ">ul" ) 
131 // toggle them
// toggle them 
132 .heightToggle( settings.animated, settings.toggle );
.heightToggle( settings.animated, settings.toggle ); 
133
 if ( settings.unique )
if ( settings.unique )  {
{ 
134 $(this).parent()
$(this).parent() 
135 .siblings()
.siblings() 
136 // swap classes for hitarea
// swap classes for hitarea 
137 .find(">.hitarea")
.find(">.hitarea") 
138 .replaceClass( CLASSES.collapsableHitarea, CLASSES.expandableHitarea )
.replaceClass( CLASSES.collapsableHitarea, CLASSES.expandableHitarea ) 
139 .replaceClass( CLASSES.lastCollapsableHitarea, CLASSES.lastExpandableHitarea )
.replaceClass( CLASSES.lastCollapsableHitarea, CLASSES.lastExpandableHitarea ) 
140 .end()
.end() 
141 .replaceClass( CLASSES.collapsable, CLASSES.expandable )
.replaceClass( CLASSES.collapsable, CLASSES.expandable ) 
142 .replaceClass( CLASSES.lastCollapsable, CLASSES.lastExpandable )
.replaceClass( CLASSES.lastCollapsable, CLASSES.lastExpandable ) 
143 .find( ">ul" )
.find( ">ul" ) 
144 .heightHide( settings.animated, settings.toggle );
.heightHide( settings.animated, settings.toggle ); 
145 }
} 
146 }
} 
147
148
 function serialize()
function serialize()  {
{ 
149
 function binary(arg)
function binary(arg)  {
{ 
150 return arg ? 1 : 0;
return arg ? 1 : 0; 
151 }
} 
152 var data = [];
var data = []; 
153
 branches.each(function(i, e)
branches.each(function(i, e)  {
{ 
154 data[i] = $(e).is(":has(>ul:visible)") ? 1 : 0;
data[i] = $(e).is(":has(>ul:visible)") ? 1 : 0; 
155 });
}); 
156 $.cookie(settings.cookieId, data.join("") );
$.cookie(settings.cookieId, data.join("") ); 
157 }
} 
158
159
 function deserialize()
function deserialize()  {
{ 
160 var stored = $.cookie(settings.cookieId);
var stored = $.cookie(settings.cookieId); 
161
 if ( stored )
if ( stored )  {
{ 
162 var data = stored.split("");
var data = stored.split(""); 
163
 branches.each(function(i, e)
branches.each(function(i, e)  {
{ 
164 $(e).find(">ul")[ parseInt(data[i]) ? "show" : "hide" ]();
$(e).find(">ul")[ parseInt(data[i]) ? "show" : "hide" ](); 
165 });
}); 
166 }
} 
167 }
} 
168
169 // add treeview class to activate styles
// add treeview class to activate styles 
170 this.addClass("treeview");
this.addClass("treeview"); 
171
172 // prepare branches and find all tree items with child lists
// prepare branches and find all tree items with child lists 
173 var branches = this.find("li").prepareBranches(settings);
var branches = this.find("li").prepareBranches(settings); 
174
175
 switch(settings.persist)
switch(settings.persist)  {
{ 
176 case "cookie":
case "cookie": 
177 var toggleCallback = settings.toggle;
var toggleCallback = settings.toggle; 
178
 settings.toggle = function()
settings.toggle = function()  {
{ 
179 serialize();
serialize(); 
180
 if (toggleCallback)
if (toggleCallback)  {
{ 
181 toggleCallback.apply(this, arguments);
toggleCallback.apply(this, arguments); 
182 }
} 
183 };
}; 
184 deserialize();
deserialize(); 
185 break;
break; 
186 case "location":
case "location": 
187
 var current = this.find("a").filter(function()
var current = this.find("a").filter(function()  { return this.href.toLowerCase() == location.href.toLowerCase(); });
{ return this.href.toLowerCase() == location.href.toLowerCase(); }); 
188
 if ( current.length )
if ( current.length )  {
{ 
189 current.addClass("selected").parents("ul, li").add( current.next() ).show();
current.addClass("selected").parents("ul, li").add( current.next() ).show(); 
190 }
} 
191 break;
break; 
192 }
} 
193
194 branches.applyClasses(settings, toggler);
branches.applyClasses(settings, toggler); 
195
196 // if control option is set, create the treecontroller and show it
// if control option is set, create the treecontroller and show it 
197
 if ( settings.control )
if ( settings.control )  {
{ 
198 treeController(this, settings.control);
treeController(this, settings.control); 
199 $(settings.control).show();
$(settings.control).show(); 
200 }
} 
201
202
 return this.bind("add", function(event, branches)
return this.bind("add", function(event, branches)  {
{ 
203 $(branches).prev()
$(branches).prev() 
204 .removeClass(CLASSES.last)
.removeClass(CLASSES.last) 
205 .removeClass(CLASSES.lastCollapsable)
.removeClass(CLASSES.lastCollapsable) 
206 .removeClass(CLASSES.lastExpandable)
.removeClass(CLASSES.lastExpandable) 
207 .find(">.hitarea")
.find(">.hitarea") 
208 .removeClass(CLASSES.lastCollapsableHitarea)
.removeClass(CLASSES.lastCollapsableHitarea) 
209 .removeClass(CLASSES.lastExpandableHitarea);
.removeClass(CLASSES.lastExpandableHitarea); 
210 $(branches).find("li").andSelf().prepareBranches(settings).applyClasses(settings, toggler);
$(branches).find("li").andSelf().prepareBranches(settings).applyClasses(settings, toggler); 
211 });
}); 
212 }
} 
213 });
}); 
214
215 // classes used by the plugin
// classes used by the plugin 
216 // need to be styled via external stylesheet, see first example
// need to be styled via external stylesheet, see first example 
217
 var CLASSES = $.fn.treeview.classes =
var CLASSES = $.fn.treeview.classes =  {
{ 
218 open: "open",
open: "open", 
219 closed: "closed",
closed: "closed", 
220 expandable: "expandable",
expandable: "expandable", 
221 expandableHitarea: "expandable-hitarea",
expandableHitarea: "expandable-hitarea", 
222 lastExpandableHitarea: "lastExpandable-hitarea",
lastExpandableHitarea: "lastExpandable-hitarea", 
223 collapsable: "collapsable",
collapsable: "collapsable", 
224 collapsableHitarea: "collapsable-hitarea",
collapsableHitarea: "collapsable-hitarea", 
225 lastCollapsableHitarea: "lastCollapsable-hitarea",
lastCollapsableHitarea: "lastCollapsable-hitarea", 
226 lastCollapsable: "lastCollapsable",
lastCollapsable: "lastCollapsable", 
227 lastExpandable: "lastExpandable",
lastExpandable: "lastExpandable", 
228 last: "last",
last: "last", 
229 hitarea: "hitarea"
hitarea: "hitarea" 
230 };
}; 
231
232 // provide backwards compability
// provide backwards compability 
233 $.fn.Treeview = $.fn.treeview;
$.fn.Treeview = $.fn.treeview; 
234
235 })(jQuery);
})(jQuery);  
4、css文件的内容 
 1
 dl,dd,dt,ul,li{
dl,dd,dt,ul,li{ }{
}{ 
 2 margin:0;
margin:0; 
 3 padding:0;
padding:0; 
 4 list-style:none;
list-style:none; 
 5 color:#333;}
color:#333;} 
 6
 #wenzhang{
#wenzhang{ }{
}{ 
 7 width:160px;
width:160px; 
 8 text-align:center;
text-align:center; 
 9 font-size:12px;
font-size:12px; 
10 border-left:1px solid #dedede;
border-left:1px solid #dedede; 
11 border-right:1px solid #dedede;
border-right:1px solid #dedede; 
12 border-bottom:1px solid #dedede;
border-bottom:1px solid #dedede; 
13 }
} 
14
 #wenzhang  dd dl dt{
#wenzhang  dd dl dt{ }{
}{ 
15 border-top:1px solid #dedede;
border-top:1px solid #dedede; 
16 background:#f2f2f2; height:25px;
background:#f2f2f2; height:25px; 
17 line-height:25px; font-weight:bold;
line-height:25px; font-weight:bold; 
18 background-image:url(../images/menu-out.jpg);
background-image:url(../images/menu-out.jpg); 
19 }
} 
20
 #wenzhang ul{
#wenzhang ul{ }{
}{ 
21 background:#f9f9f9;
background:#f9f9f9; 
22 }
} 
23
 #wenzhang li{
#wenzhang li{ }{
}{ 
24 border-top:1px solid #efefef;
border-top:1px solid #efefef; 
25 line-height:25px;
line-height:25px; 
26 }
}