您的位置:首页 > Web前端 > JQuery

JQuery树形菜单

2016-06-17 17:06 316 查看
我是个jquery菜鸟,这个树形菜单不是太完善,但还是能用的,下面我们看一下它的实现步骤及效果!

第一步:先写好html代码吧,主要是使用的div ul li 实现的一个树形菜单,此代码是放在html中 body里面的。

1 <div>
2   <p ><span style="float:right;">更多</span>标题</p>
3   <p> <img src="http://localhost:4209/WebResource.axd?d=_JGn3DikucdSKjYQma8Z5RCn9_rflEQoRz5gCY7Fhzc1&t=634650160260000000" alt="fgf"/> </p>
4 </div>
5
6
7 <ul class="Tul">
8                             <li id="dpm_1">
9                                 <h3 class="Th3">
10                                     <img src="images/j.gif" class="tree_icon" /><span class="tree_right"><input type="checkbox" /></span><span
11                                         id="dpmD_1">最惠票务</span>    <a onclick="addTree(1);" href="#"
12                                             class="blue_link">添加</a>   <a onclick="update(0,1,'最惠票务',1);" href="#"
13                                                 class="blue_link">修改</a>   <a onclick="deleteTree(1,this);" href="#" class="blue_link">删除</a></h3>
14                                 <ul class="Tul">
15                                     <li id="dpm_18">
16                                         <h3 class="Th3">
17                                             <img src="images/j.gif" class="tree_icon" /><span class="tree_right"><input type="checkbox" />
18                                             </span><span
19                                                 id="dpmD_18">行政部门</span>  <span style="color: #FF9900"> [行政部经理]</span>  <a
20                                                     onclick="addTree(18);" href="#" class="blue_link">添加</a>   <a onclick="update(1,18,'行政部门',null);"
21                                                         href="#" class="blue_link">修改</a>   <a onclick="deleteTree(18,this);" href="#"
22                                                             class="blue_link">删除</a></h3>
23                                         <ul class="Tul">
24                                             <li id="dpm_22">
25                                                 <h3 class="Th3">
26                                                     <img src="images/j.gif" class="tree_icon" /><span class="tree_right"><input type="checkbox" /></span><span
27                                                         id="dpmD_22">行政部一组</span>    <a onclick="addTree(22);" href="#"
28                                                             class="blue_link">添加</a>   <a onclick="update(18,22,'行政部一组',null);" href="#"
29                                                                 class="blue_link">修改</a>   <a onclick="deleteTree(22,this);" href="#" class="blue_link">删除</a></h3>
30                                             </li>
31                                             <li id="dpm_25">
32                                                 <h3 class="Th3">
33                                                     <img src="images/j.gif" class="tree_icon" /><span class="tree_right"><input type="checkbox" /></span><span
34                                                         id="dpmD_25">行政部三组</span>    <a onclick="addTree(25);" href="#"
35                                                             class="blue_link">添加</a>   <a onclick="update(18,25,'行政部三组',56);" href="#"
36                                                                 class="blue_link">修改</a>   <a onclick="deleteTree(25,this);" href="#" class="blue_link">删除</a></h3>
37                                             </li>
38                                         </ul>
39                                     </li>
40                                     <li id="dpm_2">
41                                         <h3 class="Th3">
42                                             <img src="images/j.gif" class="tree_icon" /><span class="tree_right"><input type="checkbox" />
43                                             </span><span
44                                                 id="dpmD_2">技术部门</span>  <span style="color: #FF9900">  [技术主管]</span><span
45                                                     style="color: #FF9900">   [技术部总监]</span>  <a onclick="addTree(2);"
46                                                         href="#" class="blue_link">添加</a>   <a onclick="update(1,2,'技术部门',2);"
47                                                             href="#" class="blue_link">修改</a>   <a onclick="deleteTree(2,this);" href="#"
48                                                                 class="blue_link">删除</a></h3>
49                                         <ul class="Tul">
50                                             <li id="dpm_12">
51                                                 <h3 class="Th3">
52                                                     <img src="images/j.gif" class="tree_icon" /><span class="tree_right"><input type="checkbox" /></span><span
53                                                         id="dpmD_12">技术部一组</span>  <span style="color: #FF9900">   [小组组长]</span>  <a
54                                                             onclick="addTree(12);" href="#" class="blue_link">添加</a>   <a onclick="update(2,12,'技术部一组',6);"
55                                                                 href="#" class="blue_link">修改</a>   <a onclick="deleteTree(12,this);" href="#"
56                                                                     class="blue_link">删除</a></h3>
57                                             </li>
58                                             <li id="dpm_36">
59                                                 <h3 class="Th3">
60                                                     <img src="images/j.gif" class="tree_icon" /><span class="tree_right"><input type="checkbox" /></span><span
61                                                         id="dpmD_36">技术部四</span>    <a onclick="addTree(36);" href="#"
62                                                             class="blue_link">添加</a>   <a onclick="update(2,36,'技术部四',45);" href="#"
63                                                                 class="blue_link">修改</a>   <a onclick="deleteTree(36,this);" href="#" class="blue_link">删除</a></h3>
64                                             </li>
65                                         </ul>
66                                     </li>
67                                     <li id="dpm_5">
68                                         <h3 class="Th3">
69                                             <img src="images/j.gif" class="tree_icon" /><span class="tree_right"><input type="checkbox" />
70                                             </span><span
71                                                 id="dpmD_5"> 人事部门</span>  <span style="color: #FF9900">  [人事主管]</span><span
72                                                     style="color: #FF9900">   [人事经理]</span>  <a onclick="addTree(5);"
73                                                         href="#" class="blue_link">添加</a>   <a onclick="update(1,5,' 人事部门',3);"
74                                                             href="#" class="blue_link">修改</a>   <a onclick="deleteTree(5,this);" href="#"
75                                                                 class="blue_link">删除</a></h3>
76                                         <ul class="Tul">
77                                             <li id="dpm_13">
78                                                 <h3 class="Th3">
79                                                     <img src="images/j.gif" class="tree_icon" /><span class="tree_right"><input type="checkbox" /></span><span
80                                                         id="dpmD_13">人事部二组</span>    <a onclick="addTree(13);" href="#"
81                                                             class="blue_link">添加</a>   <a onclick="update(5,13,'人事部二组',8);" href="#"
82                                                                 class="blue_link">修改</a>   <a onclick="deleteTree(13,this);" href="#" class="blue_link">删除</a></h3>
83                                             </li>
84                                             <li id="dpm_43">
85                                                 <h3 class="Th3">
86                                                     <img src="images/j.gif" class="tree_icon" /><span class="tree_right"><input type="checkbox" /></span><span
87                                                         id="dpmD_43">人事部一</span>    <a onclick="addTree(43);" href="#"
88                                                             class="blue_link">添加</a>   <a onclick="update(5,43,'人事部一',56);" href="#"
89                                                                 class="blue_link">修改</a>   <a onclick="deleteTree(43,this);" href="#" class="blue_link">删除</a></h3>
90                                             </li>
91                                         </ul>
92                                     </li>
93                                     <li id="dpm_24">
94                                         <h3 class="Th3">
95                                             <img src="images/j.gif" class="tree_icon" /><span class="tree_right"><input type="checkbox" /></span><span
96                                                 id="dpmD_24">客服部</span>    <a onclick="addTree(24);" href="#"
97                                                     class="blue_link">添加</a>   <a onclick="update(1,24,'客服部',55);" href="#"
98                                                         class="blue_link">修改</a>   <a onclick="deleteTree(24,this);" href="#" class="blue_link">删除</a></h3>
99                                         <ul class="Tul">
100                                             <li id="dpm_47">
101                                                 <h3 class="Th3">
102                                                     <img src="images/j.gif" class="tree_icon" /><span class="tree_right"><input type="checkbox" /></span><span
103                                                         id="dpmD_47">客服一</span>    <a onclick="addTree(47);" href="#"
104                                                             class="blue_link">添加</a>   <a onclick="update(24,47,'客服一',6);" href="#"
105                                                                 class="blue_link">修改</a>   <a onclick="deleteTree(47,this);" href="#" class="blue_link">删除</a></h3>
106                                             </li>
107                                         </ul>
108                                     </li>
109                                 </ul>
110                             </li>
111                         </ul>


第二步:就是关键的一步

1 <script type="text/javascript">
2    $(document).ready(function(){
3          $("li").each(function(){ //遍历li下面的ul
4           $(this).find("ul").css("display","none");
5           if($(this).find("ul").length==0){
6             $(this).find("img:first").attr("src","images/line.gif");
7         }else{
8             if($(this).find("ul").css("display")=="none"){
9                 $(this).find("img:first").attr("src","images/add.gif");
10             }else{
11                 $(this).find("img:first").attr("src","images/jian.gif");
12             }
13         }
14       });
15
16     /*  $("input:checkbox").click(function(){
17
18           if($(this).attr("checked")==""){
19
20             $(this).parent().parent().parent().find(":checkbox").removeAttr("checked");
21         }else{
22
23             $(this).parent().parent().parent().find(":checkbox").attr("checked","checked");
24         }
25       });*/
26
27       $("input:checkbox").click(function () {
28
29         if ($(this).attr("checked") == "") {
30         //这句切记,如果在html里面这样写$(this).attr("checked") == "",
31         //如果在C#程序里面就该这样写了$(this).attr("checked") == null。
32
33             Isfather(this, false);
34             Ischild(this, false);
35         }
36         else {
37             Isfather(this, true);
38             Ischild(this, true);
39         }
40     });
41
42
43     /*********此块代码是实现checkbox选中的一些函数**********/
44     function Isfather(t,val) {
45
46     var father = $(t).parent().parent().parent().parent().parent().children("H3").children("SPAN");
47     if (father.length >0) {
48
49
50         if (!val) {
51             if (!Isbrother(t)) {
52                 $(father).find(":checkbox").removeAttr("checked");
53                 Isfather($(father).find(":checkbox")[0], val);
54             }
55         }
56         else {
57             $(father).find(":checkbox").attr("checked", "checked");
58             Isfather($(father).find(":checkbox")[0], val);
59         }
60
61     }
62 }
63  /*****找到checkbox的兄弟****/
64     function Isbrother(t) {
65
66         var Is = false;
67         brother = $(t).parent().parent().parent().parent().parent().children("UL").children("LI").find(":checkbox");
68         if (brother.length > 0) {
69
70             var i = 0;
71             for (i = 0; i < brother.length; i++) {
72
73                 if (brother[i].checked) {
74                     Is = brother[i].checked;
75                     break;
76                 }
77             }
78
79        }
80        return Is;
81     }
82     function Ischild(t,val) {
83
84         var child = $(t).parent().parent().parent().children("UL").children("LI");
85         if ( child != null) {
86             if ($(child).find(":checkbox").length > 0) {
87                 if (val)
88                     $(child).find(":checkbox").attr("checked", "checked");
89                 else {
90                     $(child).find(":checkbox").removeAttr("checked");
91
92                 }
93              }
94         }
95     }
96 /*******checkbox前面的展开隐藏操作******/
97       $(".tree_icon").click(function(){
98           if($(this).parent().next().css("display")=="none"){
99               $(this).parent().next().show();
100             $(this).attr("src","images/jian.gif");
101         }else{
102             $(this).parent().next().hide();
103             $(this).attr("src","images/add.gif");
104         }
105       });
106    })
107 </script>


第三步:要动态加载的数据递归加载进去



1  function SetDepartmentOrganizaByWhere(pid) {
2     var ds = //要动态加载的数据
3     var table = ds.Tables[0];
4     if (!table) return;
5     if (table.Rows.length == 0) { return; } else {
6         str += " <ul class=\"Tul\">";
7     }
8     for (var i = 0; i < table.Rows.length; i++) {
9
10         var dr = table.Rows[i];
11         str += "<li id=\"dpm_" + dr.Dpm_Id + "\"> <h3 class=\"Th3\"> <img src=\"../images/j.gif\" class=\"tree_icon\" /><span class=\"tree_right\">";
12         str += "<input type=\"checkbox\" /></span><span id=\"dpmD_" + dr.Dpm_Id + "\">" + dr.Dpm_Name + "</span>  ";
13
14         str += "  <a onclick=\"addTree(" + dr.Id + ");\" href=\"#\" class=\"blue_link\">添加</a>   ";
15         str += "<a onclick=\"update(" + dr.Id + "," + dr.name+ ",'" + dr.age+ "'," + dr.level
16                + ");\" href=\"#\" class=\"blue_link\">修改</a>   ";
17         str += "<a onclick=\"deleteTree(" + dr.Id + ",this);\" href=\"#\" class=\"blue_link\">删除</a></h3>";
18         SetDepartmentOrganizaByWhere(dr.Id);
19         str += "</li>";
20     }
21     str += "</ul>";
22 }


第四步:在添加修改删除后实现局部刷新的功能

只能说说思路了个人实现方式,如果大家有更好的,希望多多指教。

在添加修改删除操作成功后,调用刷新函数,刷新函数里面要做的操作如下:

1.添加:添加后根据id来对当前父类节点下的数据进行先移除,在读取根据id读取新的数据,追加到当前父节点下面即可实现

2.修改:修改做的比较简单,就把当前修改的文本替换掉之前的文本 ul 父节点的id.html("修改的内容"),这次不用去根据id取数据了。

3.删除:就是根据当前父节点的ul id下的要删除的部分用remove()移除就完成了。

这样就完成了,此时要注意,这样循环,是要去有根有枝的,没有根(父类)怎么找枝(子类)嘻嘻。就这样吧。其实做的时候遇到好多问题的。其实我还是不太好控制它呢。哎悲催,努力中juqery学习中……

愿能各帮助大家吧!在写个下拉菜单去!

本文转载自http://www.cnblogs.com/huicao/archive/2012/06/30/2571177.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: