用JQuery实现简单的菜单隐藏于切换

《锋利的JQuery》第一个demo<!DOCTYPE html>

<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <script type="text/javascript" src="jquery-3.3.1.min.js"></script>
    <title>Document</title>
    <style>
        div.showall>a:hover{
            color: rgb(235, 147, 39)
        }
        .promoted{
            background-color: deepskyblue;
            width: 10%;
        }
    </style>
</head>
<body>
    <div class="container">
        <ul>
            <li><a href="#">Html</a></li>
            <li><a href="#">Css</a></li>
            <li><a href="#">JavaScript</a></li>
            <li><a href="#">JQuery</a></li>
            <li><a href="#">BootStrap</a></li>
            <li><a href="#">Ajax</a></li>
            <li><a href="#">Node.js</a></li>
            <li><a href="#">Http</a></li>
            <li><a href="#">Tcp/Ip</a></li>
            <li><a href="#">Vue</a></li>
            <li><a href="#">Github</a></li>
            <li><a href="#">Webpack</a></li>
            <li><a href="#">Json</a></li>
            <li><a href="#">OOP</a></li>
            <li><a href="#">Less</a></li>
        </ul>
        <div class="showall">
            <a href="more.html"><span>显示全部</span></a>
            <!-- 平稳退化:如果用户禁用了js 就将整个页面重载来显示完整列表 -->
        </div>
    </div>
    <script>
        var $hiddenitems = $("ul li:gt(5):not(:last)");//获取ul下索引值大于5的li元素,再去掉最后一个符合的li
        $hiddenitems.hide();
        var showbtn = $("div.showall> a");//不能用.showall div
        showbtn.click(function(){
            if($hiddenitems.is(":visible")){
                $hiddenitems.hide();
                $(this).find("span").css("color","red")
                    .text("收起列表");
                $("ul li").filter(":contains('JQuery'),:contains('Node')")
                    .removeClass("promoted");
        }else{
                $hiddenitems.show();
                $(this).find("span").css("color","deepskyblue")
                    .text("显示全部");
                $("ul li").filter(":contains('JQuery'),:contains('Node')")
                .addClass("promoted");
            }
            return false;
        })
//《锋利的JQuery》中提到了使用toggle方法,我试了一下发现并不可以
     //查阅后得知jquery1.9以后toggle方法只做切换隐藏显示动画用了,toggle([speed],[easing],[fn])
   </script> </body> </html>

 

posted @ 2019-03-15 13:51  林不渡  阅读(818)  评论(0编辑  收藏  举报