JQuery制作的折叠下拉菜单
昨天做项目的时候自己画的一个折叠菜单。该菜单总共是3级,默认显示的是第一级的栏目名称,点击第一级的栏目名称,则显示其下的二级栏目菜单列表,如果这时有其他的第一级栏目处于展开状态,则会自动折叠关闭。在第二级菜单列表中点击栏目名称便展开其下的第三级最终产品列表。感觉这种折叠菜单在电子商务网站中还比较常用,功能一点也不复杂,但配合好看的界面以及强大的Jquery代码,能给用户良好的操作体验,所以在此把源代码记录下来以便参考。
鉴于编辑器对jquery代码支持不太好,就不演示了,就给个示意图展示下模块
先看JQuery代码:
1 var j = jQuery.noConflict();
2 this.accordion=function(){
3 j('dl.category:first-child').find('dt').addClass('Current');
4 j('dl.category:not(:first-child)').find('dd').hide();
5 j('dl.category dd').find('ul').hide();
6
7 j('dl.category dt').click(function(e){
8 j(this).find('a').blur();
9 j(this).toggleClass('Current').parent().find('dd').slideToggle();
10 j(this).parent().siblings('dl').find('dt').removeClass('Current').end().find('dd').hide();
11 return stopDefault(e);
12 });
13 j('dl.category dd>span').click(function(e){
14 j(this).toggleClass('Current').next('ul').toggle();
15 j(this).parent().siblings('dd').find('span').removeClass('Current').end().find('ul').hide();
16 j(this).find('a').blur();
17 return stopDefault(e);
18 });
19 };
20 j(document).ready(function(){
21 accordion();
22 });
23
24 function stopDefault(e){
25 if(e && e.preventDefault)
26 e.preventDefault();
27 else
28 window.event.returnValue = false;
29 return false;
30 };
31
2 this.accordion=function(){
3 j('dl.category:first-child').find('dt').addClass('Current');
4 j('dl.category:not(:first-child)').find('dd').hide();
5 j('dl.category dd').find('ul').hide();
6
7 j('dl.category dt').click(function(e){
8 j(this).find('a').blur();
9 j(this).toggleClass('Current').parent().find('dd').slideToggle();
10 j(this).parent().siblings('dl').find('dt').removeClass('Current').end().find('dd').hide();
11 return stopDefault(e);
12 });
13 j('dl.category dd>span').click(function(e){
14 j(this).toggleClass('Current').next('ul').toggle();
15 j(this).parent().siblings('dd').find('span').removeClass('Current').end().find('ul').hide();
16 j(this).find('a').blur();
17 return stopDefault(e);
18 });
19 };
20 j(document).ready(function(){
21 accordion();
22 });
23
24 function stopDefault(e){
25 if(e && e.preventDefault)
26 e.preventDefault();
27 else
28 window.event.returnValue = false;
29 return false;
30 };
31
再看样式代码:
Code
最后就是html结构代码:
1 <div id="BoxlstMultiLevel">
2 <h2>
3 <strong><a href="#" title="多级列表类">多级列表类</a></strong>
4 </h2>
5 <div class="lstMultiLevel">
6 <dl class="category">
7 <dt><span><a href="#" title="产品分类目录名1">产品分类目录名1</a></span></dt>
8 <dd>
9 <span><a href="#" title="产品分类目录名2">产品分类目录名2</a></span>
10 <ul>
11 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
12 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
13 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
14 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
15 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
16 </ul><div class="clear"></div>
17 </dd>
18 </dl>
19 <dl class="category">
20 <dt><span><a href="#" title="产品分类目录名1">产品分类目录名1</a></span></dt>
21 <dd>
22 <span><a href="#" title="产品分类目录名2">产品分类目录名2</a></span>
23 <ul>
24 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
25 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
26 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
27 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
28 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
29 </ul><div class="clear"></div>
30 </dd>
31 <dd>
32 <span><a href="#" title="产品分类目录名2">产品分类目录名2</a></span>
33 <ul>
34 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
35 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
36 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
37 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
38 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
39 </ul><div class="clear"></div>
40 </dd>
41 <dd>
42 <span><a href="#" title="产品分类目录名2">产品分类目录名2</a></span>
43 <ul>
44 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
45 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
46 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
47 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
48 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
49 </ul><div class="clear"></div>
50 </dd>
51 </dl>
52 <dl class="category">
53 <dt><span><a href="#" title="产品分类目录名1">产品分类目录名1</a></span></dt>
54 <dd>
55 <span><a href="#" title="产品分类目录名2">产品分类目录名2</a></span>
56 <ul>
57 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
58 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
59 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
60 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
61 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
62 </ul><div class="clear"></div>
63 </dd>
64 </dl><div class="clear"></div>
65 </div>
66 </div>
2 <h2>
3 <strong><a href="#" title="多级列表类">多级列表类</a></strong>
4 </h2>
5 <div class="lstMultiLevel">
6 <dl class="category">
7 <dt><span><a href="#" title="产品分类目录名1">产品分类目录名1</a></span></dt>
8 <dd>
9 <span><a href="#" title="产品分类目录名2">产品分类目录名2</a></span>
10 <ul>
11 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
12 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
13 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
14 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
15 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
16 </ul><div class="clear"></div>
17 </dd>
18 </dl>
19 <dl class="category">
20 <dt><span><a href="#" title="产品分类目录名1">产品分类目录名1</a></span></dt>
21 <dd>
22 <span><a href="#" title="产品分类目录名2">产品分类目录名2</a></span>
23 <ul>
24 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
25 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
26 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
27 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
28 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
29 </ul><div class="clear"></div>
30 </dd>
31 <dd>
32 <span><a href="#" title="产品分类目录名2">产品分类目录名2</a></span>
33 <ul>
34 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
35 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
36 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
37 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
38 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
39 </ul><div class="clear"></div>
40 </dd>
41 <dd>
42 <span><a href="#" title="产品分类目录名2">产品分类目录名2</a></span>
43 <ul>
44 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
45 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
46 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
47 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
48 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
49 </ul><div class="clear"></div>
50 </dd>
51 </dl>
52 <dl class="category">
53 <dt><span><a href="#" title="产品分类目录名1">产品分类目录名1</a></span></dt>
54 <dd>
55 <span><a href="#" title="产品分类目录名2">产品分类目录名2</a></span>
56 <ul>
57 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
58 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
59 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
60 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
61 <li><span><a href="#" title="产品分类目录名3">产品分类目录名3</a></span><em>(18)</em></li>
62 </ul><div class="clear"></div>
63 </dd>
64 </dl><div class="clear"></div>
65 </div>
66 </div>