jQuery实现菜单的隐藏和显示

实现效果
首先我们先制作好菜单的大致框架,然后再利用jQuery对菜单的隐藏和显示属性进行判断,如果是隐藏的就显示,如果是显示的就隐藏
我们先用一个ul写出大概的框架

ul>li*4这是一个简便的写法按tab键就可以实现如下的效果
<ul>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
        </ul>
<ul>
            <li>学生管理
                <ul>
                    <li>添加学生</li>
                    <li>修改学生</li>
                    <li>删除学生</li>
                </ul>
            </li>
            <li>班级管理
                <ul>
                    <li>添加班级</li>
                    <li>修改班级</li>
                    <li>删除班级</li>
                </ul>
            </li>
            <li>教师管理
                <ul>
                    <li>添加教师</li>
                    <li>修改教师</li>
                    <li>删除教师</li>
                </ul>
            </li>
        </ul>

我们先在大的ul里面写三个li,然后再在每一个li里面写一个ul,
效果如图所示
这里写图片描述
接下来就是对ul添加样式
由于这里我们不好添加对应的CSS样式,所以改用section的方法
section和div的区别
这里我们用一个大的section来包住所有的标题
然后再给每一个标题用一个ul来表示
div*3 按tab 进行快速编码

<section>
            <div>学生管理</div>
            <ul>
                <li>添加学生</li>
                <li>修改学生</li>
                <li>删除学生</li>
            </ul>
            <div>班级管理</div>
            <ul>
                <li>添加班级</li>
                <li>修改班级</li>
                <li>删除班级</li>
            </ul>
            <div>教师管理</div>
            <ul>
                <li>添加教师</li>
                <li>修改教师</li>
                <li>删除教师</li>
            </ul>
        </section>

这里可以直接在div的后面写ul不用div包起来
这里写图片描述
然后我们为每一个div添加一个css样式

div{
    width: 200px;
    height: 25px;
    background-color: lightcyan;
    line-height: 25px;
    border: 1px solid lightgray;
    padding-left: 25px;
    font-size: 15px;
}
ul{
    font-size: 15px;
}

如图所示这里写图片描述
那么下面我们的任务就是为每一个div添加一个点击事件,先判断属性是隐藏还是显示,如果是显示就设置为隐藏,如果是隐藏就显示
我们先把默认第一个显示 第二个和第三个隐藏

$("ul:eq(1),ul:last-child").hide();
//  先将第二个和最后一个隐藏
    $("ul:eq(1),ul:last-child").hide();
    $("div").click(function(){
//      console.log($(this));
//这里选中的div,而我们要隐藏的是ul,所以要用next()
        var ul= $(this).next() 
        if(ul.is(":hidden")){
            ul.show();
        }else{
            ul.hide();
        }   
    })

这里写图片描述
但是这里又有一个问题是,我们需要点击另外一个的同时将已经显示隐藏起来

var click_ul= $(this).next(); 
if(click_ul.is(":hidden")){
//          在让点击的ul显示的时候,需要将所有的ul先隐藏
            $("ul").hide();
            click_ul.show();
        }else{
            click_ul.hide();
        }   

那么现在我们就已经实现了所有的功能
这里写图片描述
但是这个效果有点生硬,我们可以将隐藏换成slideup(),把show()换成slidedown()
我们再看看效果
这里写图片描述
这个和上面相比就没有那么生硬了

欢迎关注我的公众号:小秋的博客 CSDN博客:https://blog.csdn.net/xiaoqiu_cr github:https://github.com/crr121 联系邮箱:rongchen633@gmail.com 有什么问题可以给我留言噢~
原文地址:https://www.cnblogs.com/flyingcr/p/10428327.html