zoukankan      html  css  js  c++  java
  • jquery树形菜单

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

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

    View Code
      1 <div>
      2   <p ><span style="float:right;">更多</span>标题</p>
      3   <p> <img src="http://localhost:4209/WebResource.axd?d=_JGn3DikucdSKjYQma8Z5RCn9_rflEQoRz5gCY7Fhzc1&amp;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>&nbsp;&nbsp;&nbsp;&nbsp;<a onclick="addTree(1);" href="#"
     12                                             class="blue_link">添加</a>&nbsp; &nbsp;<a onclick="update(0,1,'最惠票务',1);" href="#"
     13                                                 class="blue_link">修改</a>&nbsp; &nbsp;<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>&nbsp;&nbsp;<span style="color: #FF9900">&nbsp;[行政部经理]</span>&nbsp;&nbsp;<a
     20                                                     onclick="addTree(18);" href="#" class="blue_link">添加</a>&nbsp; &nbsp;<a onclick="update(1,18,'行政部门',null);"
     21                                                         href="#" class="blue_link">修改</a>&nbsp; &nbsp;<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>&nbsp;&nbsp;&nbsp;&nbsp;<a onclick="addTree(22);" href="#"
     28                                                             class="blue_link">添加</a>&nbsp; &nbsp;<a onclick="update(18,22,'行政部一组',null);" href="#"
     29                                                                 class="blue_link">修改</a>&nbsp; &nbsp;<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>&nbsp;&nbsp;&nbsp;&nbsp;<a onclick="addTree(25);" href="#"
     35                                                             class="blue_link">添加</a>&nbsp; &nbsp;<a onclick="update(18,25,'行政部三组',56);" href="#"
     36                                                                 class="blue_link">修改</a>&nbsp; &nbsp;<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>&nbsp;&nbsp;<span style="color: #FF9900">&nbsp;&nbsp;[技术主管]</span><span
     45                                                     style="color: #FF9900">&nbsp; &nbsp;[技术部总监]</span>&nbsp;&nbsp;<a onclick="addTree(2);"
     46                                                         href="#" class="blue_link">添加</a>&nbsp; &nbsp;<a onclick="update(1,2,'技术部门',2);"
     47                                                             href="#" class="blue_link">修改</a>&nbsp; &nbsp;<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>&nbsp;&nbsp;<span style="color: #FF9900">&nbsp; &nbsp;[小组组长]</span>&nbsp;&nbsp;<a
     54                                                             onclick="addTree(12);" href="#" class="blue_link">添加</a>&nbsp; &nbsp;<a onclick="update(2,12,'技术部一组',6);"
     55                                                                 href="#" class="blue_link">修改</a>&nbsp; &nbsp;<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>&nbsp;&nbsp;&nbsp;&nbsp;<a onclick="addTree(36);" href="#"
     62                                                             class="blue_link">添加</a>&nbsp; &nbsp;<a onclick="update(2,36,'技术部四',45);" href="#"
     63                                                                 class="blue_link">修改</a>&nbsp; &nbsp;<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>&nbsp;&nbsp;<span style="color: #FF9900">&nbsp; [人事主管]</span><span
     72                                                     style="color: #FF9900">&nbsp; &nbsp;[人事经理]</span>&nbsp;&nbsp;<a onclick="addTree(5);"
     73                                                         href="#" class="blue_link">添加</a>&nbsp; &nbsp;<a onclick="update(1,5,' 人事部门',3);"
     74                                                             href="#" class="blue_link">修改</a>&nbsp; &nbsp;<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>&nbsp;&nbsp;&nbsp;&nbsp;<a onclick="addTree(13);" href="#"
     81                                                             class="blue_link">添加</a>&nbsp; &nbsp;<a onclick="update(5,13,'人事部二组',8);" href="#"
     82                                                                 class="blue_link">修改</a>&nbsp; &nbsp;<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>&nbsp;&nbsp;&nbsp;&nbsp;<a onclick="addTree(43);" href="#"
     88                                                             class="blue_link">添加</a>&nbsp; &nbsp;<a onclick="update(5,43,'人事部一',56);" href="#"
     89                                                                 class="blue_link">修改</a>&nbsp; &nbsp;<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>&nbsp;&nbsp;&nbsp;&nbsp;<a onclick="addTree(24);" href="#"
     97                                                     class="blue_link">添加</a>&nbsp; &nbsp;<a onclick="update(1,24,'客服部',55);" href="#"
     98                                                         class="blue_link">修改</a>&nbsp; &nbsp;<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>&nbsp;&nbsp;&nbsp;&nbsp;<a onclick="addTree(47);" href="#"
    104                                                             class="blue_link">添加</a>&nbsp; &nbsp;<a onclick="update(24,47,'客服一',6);" href="#"
    105                                                                 class="blue_link">修改</a>&nbsp; &nbsp;<a onclick="deleteTree(47,this);" href="#" class="blue_link">删除</a></h3>
    106                                             </li>
    107                                         </ul>
    108                                     </li>
    109                                 </ul>
    110                             </li>
    111                         </ul>

    第二步:就是关键的一步

    View Code
      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>


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

    View Code
     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>&nbsp;&nbsp;";
    13        
    14         str += "&nbsp;&nbsp;<a onclick=\"addTree(" + dr.Id + ");\" href=\"#\" class=\"blue_link\">添加</a>&nbsp; &nbsp;";
    15         str += "<a onclick=\"update(" + dr.Id + "," + dr.name+ ",'" + dr.age+ "'," + dr.level
    16                + ");\" href=\"#\" class=\"blue_link\">修改</a>&nbsp; &nbsp;";
    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学习中……

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

  • 相关阅读:
    线性关系和相关系数
    CSS中的display:inlineblock
    SQL Server中常用的SQL语句
    Access SQL中Left Join、Right Join和Inner Join的使用
    PHP合并静态文件
    PHP中的include功能
    CSS背景图片居中的细节
    IIS Web服务扩展中添加ASP.NET4.0
    修改SQL server数据库中的逻辑文件名
    在SQL Server中,不使用“SQL 邮件”的情况下发送邮件
  • 原文地址:https://www.cnblogs.com/huicao/p/2571177.html
Copyright © 2011-2022 走看看