JQuery实现折叠菜单

最近在做ERP系统,框架的菜单页面,采用了二级菜单的模式。需要使用折叠菜单。这个之前做过,但是出了学校之后就很久没有用过了,翻了翻文档。用JQuery实现了一下:

一个简单的二级菜单

1  <div class="bartitleFAQ">
2 <button id="btn">服务管理 </button>
3 <div class="FAQlist">
4 <ul>
5 <li><a href='#'> 等待提交</a></li>
6 <li><a href='#' title=''> 等待发布</a></li>
7 <li><a href='#' title=''> 正式项目</a></li>
8 <li><a href='#' title=''> 点此新增</a></li></ul>
9 </div>

我直接使用的JQuery逻辑实现:

 1 $(document).ready(function(){
 2   //载入页面时,将二级菜单隐藏
 3   $(".FAQlist").css("display","none");
 4   //点击事件
 5   $("#btn").click(function(){
 6    //判断是否隐藏
 7    if($(".FAQlist").css("display") == "none"){
 8     $(".FAQlist").css("display","block");
 9    }else{
10     $(".FAQlist").css("display","none");
11    }
12   });
13  });

这样就可以实现一个简单的菜单折叠效果了。

改进:

后来我发现,菜单的折叠效果,使用的都是同一个逻辑,只是不同的按钮触发事件罢了。因此,我觉得将折叠效果的逻辑抽取成方法,可以提高代码的重用。

如下是连个二级菜单:

 1 <div class="order">
 2     <button id="order_btn">订单管理</button>
 3 </div>
 4 <div class="order_list">
 5     <ul>
 6         <li><a href="#">查看订单</a></li>
 7         <li><a href="#">新建订单</a></li>
 8         <li><a href="#">失败订单</a></li>
 9     </ul>
10 </div>
11 
12 <div class="user">
13     <button id="user_btn" >用户管理</button>
14 </div>
15 <div class="user_list">
16     <ul>
17         <li><a href="#">增加用户</a></li>
18         <li><a href="#">用户列表</a></li>
19     </ul>
20 </div>

JQuery:

 1 $(document).ready(function(){
 2       //载入页面时,将二级菜单隐藏
 3       //$(".order_list").css("display","none");
 4       $("div[class$='_list']").css("display","none");
 5       //点击订单事件
 6       $("#order_btn").click(function(){
 7        
 8        tt(this);
 9        /* if($(".order_list").css("display") == "none"){
10         $(".order_list").css("display","block");
11        }else{
12         $(".order_list").css("display","none");
13        } */
14       });
15       //点击user按钮事件
16       $("#user_btn").click(function(){
17            
18          tt(this);
19            
20           });
21      });
22      //抽取逻辑的方法
23      function tt(val){
24          cl=$(val).parent().attr("class");
25         //alert($("."+cl+"_list").css("display") == "none");
26         if($("."+cl+"_list").css("display") == "none"){
27             $("."+cl+"_list").css("display","block");
28         }else{
29             $("."+cl+"_list").css("display","none");
30         }     
31      }

注意:
       使用这个方法的话,页面的元素命名要采取一定约定规则。我的使用的规则是一级div为name,button是name_btn;二级div的命名为name_list。

原文地址:https://www.cnblogs.com/chengxuyuanxiaoye/p/3684686.html